Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除/替换字符串中的特定单词或短语-R_R_String_Replace_Substring_Recode - Fatal编程技术网

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

删除/替换字符串中的特定单词或短语-R,r,string,replace,substring,recode,R,String,Replace,Substring,Recode,我环顾了这里和其他地方,发现了许多类似的问题,但没有一个能完全回答我的问题。我需要清理命名约定,特别是替换/删除特定列/变量中的某些单词和短语,而不是整个数据集。我正在从SPSS迁移到R,下面我有一个在SPSS中执行此操作的代码示例,但我不确定如何在R中执行此操作 例如: “阿卡迪亚教区”->“阿卡迪亚”(删除教区和教区前的空间) “第五区”->“第五区”(删除区和区前的空间) SPSS语法: COMPUTE country=REPLACE(country,'教区','')。 本专栏中只有320

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

例如:

“阿卡迪亚教区”->“阿卡迪亚”(删除教区和教区前的空间)

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

SPSS语法:

COMPUTE country=REPLACE(country,'教区','')。

本专栏中只有32000个案例,需要替换/删除的内容各不相同,并且案例可以重复(包含“教区”的短语有几十个实例),这意味着编写需要删除/替换的代码要快得多,删除所有空格、特定单词或字符后的所有字符、所有特殊字符等并不像正则表达式那样简单或干净,而且必须包含前导空格

我已经看过replace()gsub()和R中的其他类似命令,但是它们都涉及到创建向量,或者看起来是这样。我想要的是语法,它查找我指定的字符,可以包含前导或尾随空格,并用我指定的字符替换它们,这些字符可以不包含任何内容,如果它找不到特定字符,则大小写保持不变

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


谢谢你的关注

也许我遗漏了一些东西,但我不明白为什么不能在正则表达式中简单地使用条件,然后删掉恼人的空白

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" 

string也许我遗漏了一些东西,但我不明白为什么不能在正则表达式中使用条件,然后去掉恼人的空白

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" 
string
dataframename$varname
dataframename$varname
>x x2 x2
[1] “阿卡迪亚”“第五”
图例:
  • ^模式的开始
  • ()组(或令牌)
  • \w*单词字符的一次或多次出现次数超过1次
  • .*除新行外,任何字符的一个或多个引用\n
  • $图案结束
  • \1从regexp返回组
>x2x2x2
[1] “阿卡迪亚”“第五”
图例:
  • ^模式的开始
  • ()组(或令牌)
  • \w*单词字符的一次或多次出现次数超过1次
  • .*除新行外,任何字符的一个或多个引用\n
  • $图案结束
  • \1从regexp返回组

您的列是一个向量。因此,使用
gsub
创建修改的向量正是您想要的。建议重复:同样,使用
gsub
或类似工具并学习一些正则表达式可能是您的最佳选择。大量资源,例如:@RyanMorton-返回错误消息“object'country'not found.”country是变量名,不确定我没有做什么b/c看起来正确。根据Gregor的解释,你的列是一个向量。因此,使用
gsub
创建修改的向量正是您想要的。建议重复:同样,使用
gsub
或类似工具并学习一些正则表达式可能是您的最佳选择。大量资源,例如:@RyanMorton-返回错误消息“object'country'not found.”country是变量名,不确定我没有做什么b/c看起来正确。根据格雷戈的解释。
> x <- c("Acadia Parish", "Fifth District")
> x2 <- gsub("^(\\w*).*$", "\\1", x)
> x2
[1] "Acadia" "Fifth"