我在这里和其他地方环顾四周,我发现了很多类似的问题,但没有一个能完全回答我的问题。我需要清理命名约定,特别是替换/删除特定列/变量中的某些单词和短语,而不是整个数据集。我正在从SPSS迁移到R,我在下面的SPSS中有一个代码示例,但我不知道如何在R中执行此操作。
EG:
“Acadia Parish” - > “阿卡迪亚”(在教区之前移除教区和空间)
“第五区” - > “第五”(删除区前的区域和空间)
SPSS语法:
COMPUTE county=REPLACE(county,' Parish','').
在列中有32,000个案例,这个问题只有少数几个,需要更换/删除的内容各不相同,案例可以重复(有几个包含'Parish'的短语实例),这意味着它要快得多要编写需要删除/替换的内容,它不像正则表达式那样简单或干净,以删除所有空格,特定单词或字符后面的所有字符,所有特殊字符等。它必须包含前导空格。
我已经查看了R中的replace()gsub()和其他类似命令,但它们都涉及创建向量,或者看起来像是这样。我想要的是查找我指定的字符的语法,它可以包括前导或尾随空格,并用我指定的东西替换它们,它们根本不包括任何内容,如果它没有找到特定的字符,则表示不变。
是的,我最终会多次重复相同的语法,创建一个矢量可能更容易,但如果可能的话,我想获得我所描述的语法,因为我还需要做其他类似的操作。
谢谢你的期待。
答案 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"