从字符串中删除/替换特定的单词或短语 - R.

时间:2017-01-26 21:38:11

标签: r string replace substring recode

我在这里和其他地方环顾四周,我发现了很多类似的问题,但没有一个能完全回答我的问题。我需要清理命名约定,特别是替换/删除特定列/变量中的某些单词和短语,而不是整个数据集。我正在从SPSS迁移到R,我在下面的SPSS中有一个代码示例,但我不知道如何在R中执行此操作。

EG:

“Acadia Parish” - > “阿卡迪亚”(在教区之前移除教区和空间)

“第五区” - > “第五”(删除区前的区域和空间)

SPSS语法:

COMPUTE county=REPLACE(county,' Parish','').

在列中有32,000个案例,这个问题只有少数几个,需要更换/删除的内容各不相同,案例可以重复(有几个包含'Parish'的短语实例),这意味着它要快得多要编写需要删除/替换的内容,它不像正则表达式那样简单或干净,以删除所有空格,特定单词或字符后面的所有字符,所有特殊字符等。它必须包含前导空格。

我已经查看了R中的replace()gsub()和其他类似命令,但它们都涉及创建向量,或者看起来像是这样。我想要的是查找我指定的字符的语法,它可以包括前导或尾随空格,并用我指定的东西替换它们,它们根本不包括任何内容,如果它没有找到特定的字符,则表示不变。

是的,我最终会多次重复相同的语法,创建一个矢量可能更容易,但如果可能的话,我想获得我所描述的语法,因为我还需要做其他类似的操作。

谢谢你的期待。

3 个答案:

答案 0 :(得分:0)

也许我错过了一些东西,但我不明白为什么你不能简单地在你的正则表达式中使用条件,然后修剪掉烦人的空白区域。

string <- c("Arcadia Parish", "Fifth District")

bad_words <- c("Parish", "District") # Write all the words you want removed here!
bad_regex <- paste(bad_words, collapse = "|")

trimws( sub(bad_regex, "", string) )

# [1] "Arcadia" "Fifth" 

答案 1 :(得分:0)

dataframename$varname <- gsub(" Parish","", dataframename$varname)

答案 2 :(得分:0)

> x <- c("Acadia Parish", "Fifth District")
> x2 <- gsub("^(\\w*).*$", "\\1", x)
> x2
[1] "Acadia" "Fifth"

图例:

  • ^模式的开始。
  • ()组(或令牌)。
  • \ w *一次或多次出现单词字符超过1次。
  • 。*除了新行\ n。
  • 之外的任何字符的一次或多次出现
  • $ end of pattern。
  • \ 1从regexp
  • 返回组