remove/replace 字符串中的特定单词或短语 - R

remove/replace specific words or phrases from character strings - R

我环顾四周,发现了很多类似的问题,但 none 正好回答了我的问题。我需要清理命名约定,特别是 replace/remove 来自特定 column/variable 的某些单词和短语,而不是整个数据集。我正在从 SPSS 迁移到 R,下面有一个在 SPSS 中执行此操作的代码示例,但我不确定如何在 R 中执行此操作。

EG:

"Acadia Parish" --> "Acadia"(删除 Parish 和 Parish 之前的 space)

"Fifth District" --> "Fifth"(删除 District 和 District 之前的 space)

SPSS 语法:

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

在 32,000 个案例的列中只有少数这个问题的实例,需要的东西 replacing/removing 各不相同,案例可以重复(包含 'Parish' 的短语有几十个实例),这意味着编写需要 removed/replaced 的代码要快得多,它不像正则表达式那样简单或干净地删除所有 space、特定单词或字符之后的所有字符、所有特殊字符等。它必须包含前导 spaces.

我查看了 R 中的 replace() gsub() 和其他类似命令,但它们都涉及创建向量,或者看起来它们涉及创建向量。我想要的是查找我指定的字符的语法,它可以包括前导或尾随 spaces,并用我指定的东西替换它们,它可以什么都不包含,如果它没有找到特定的字符,大小写不变。

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

感谢您的观看。

也许我遗漏了什么,但我不明白为什么你不能简单地在正则表达式中使用条件,然后 trim 去掉烦人的白色 space。

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" 
dataframename$varname <- gsub(" Parish","", dataframename$varname)
> x <- c("Acadia Parish", "Fifth District")
> x2 <- gsub("^(\w*).*$", "\1", x)
> x2
[1] "Acadia" "Fifth"

图例:

  • ^ 模式开始。
  • () 组(或代币)。
  • \w* 单词字符一次或多次出现超过 1 次。
  • .* 除换行符外的任意字符出现一次或多次 \n.
  • $ 模式结束。
  • \1 Returns 来自正则表达式的组