在R中保留部分字符串

数据挖掘 r 数据清理 正则表达式
2022-02-14 21:55:54

我有一个包含以下列的数据框

city <- c("Sydney NSW", "Newcastle NSW", "Liverpool NSW", "Broken Hill NSW")

我想维护之前的所有内容NSW(包括空间)。可以在 R 中使用什么正则表达式?

2个回答

使用strsplit().

如果要删除两个单词之间的空格(以及“NSW”):

city_clean <- unlist(c(strsplit(city, " NSW")))

输出:[1] "Sydney" "Newcastle" "Liverpool" "Broken Hill"

我不清楚你是否想保留这个空间。如果要保留城市名称后的尾随空格

city_clean <- unlist(c(strsplit(city, "NSW")))

输出:[1] "Sydney " "Newcastle " "Liverpool " "Broken Hill "

如果您更喜欢使用正则表达式,这是另一种解决方案:

city_clean <- gsub(" NSW", "", city)

输出:[1] "Sydney" "Newcastle" "Liverpool" "Broken Hill"

在基础 R 中,您可以使用

gsub("NSW$", "", city)

该函数是向量化的,并在向量的所有元素中执行替换。

使用 tidyverse 包stringr,您可以使用矢量化函数str_replace

library(stringr)
str_replace(city, "NSW$", "")

在我看来,这里的论点顺序更自然。

stringr取决于stringi如果你必须先安装这些包,这将需要一段时间,因为 R 在安装过程中会编译很多辅助 C/C++ 代码。