2014-03-24 218 views
2

如何从字符串中删除以“@”开头的所有单词?从字符串中删除以“@”开头的所有单词

例如, “@AgnezMo在@AirAsia空中客车A320-216机队@NinetologyMY号衣 - 9M-AHG CC:@AgnesMonicaEnt @agnezone http://t.co/hfXwUQq2Oq

我想有串是 “在空中客车A320-216舰队与号衣 - 9M-AHG CC:http://t.co/hfXwUQq2Oq

+0

嗨,谢谢!还有一个问题,我注意到使用gsub时区分大小写。是否有可能从数据中删除“AgnezMo”,而不管大写或小写?换句话说,我想删除AGNEZMO,agnezmo,agNEZMO等(以大写/小写的任何可能的组合形式) – user3456230

回答

8

试试这个地方s是输入:

gsub("@\\w+ *", "", s) 

捐赠:

"On Airbus A320-216 Fleet with Livery -- 9M-AHG cc: http://t.co/hfXwUQq2Oq" 
+0

嗨,谢谢!还有一个问题,我注意到使用gsub时区分大小写。是否有可能从数据中删除“AgnezMo”,而不管大写或小写?换句话说,我想删除AGNEZMO,agnezmo,agNEZMO等(以大写/小写的任何可能的组合) – user3456230

+0

\ w匹配任一情况。 –

+0

嘿,这也帮助我。谢了哥们! –

1

您可以通过sub呼叫被R使用正则表达式,如所描述here

正则表达式匹配那些将是:@\w+\s+

+2

Adi,不知道你在这里编辑了什么?你只是将“正则表达式”更改为“正则表达式”? – bosnjak

0

嗨,你可以这样做:

xx <- "@AgnezMo On @AirAsia Airbus A320-216 Fleet with @NinetologyMY Livery -- 9M-AHG cc: @AgnesMonicaEnt @agnezone http://t.co/hfXwUQq2Oq" 
gsub("@([a-zA-Z0-9]|[_])*", "", xx) 

## [1] " On Airbus A320-216 Fleet with Livery -- 9M-AHG cc: http://t.co/hfXwUQq2Oq" 
0

假设str是字符串,

> gsub("@[A-Za-z]+ ", "", str) 
# [1] "On Airbus A320-216 Fleet with Livery -- 9M-AHG cc: http://t.co/hfXwUQq2Oq" 
0

我会用字符类从stringr包str_replace_all功能:

usercomment <- c("@AgnezMo On @AirAsia Airbus A320-216 Fleet with @NinetologyMY Livery -- 9M-AHG cc: @AgnesMonicaEnt @agnezone") 

library(stringr) 
test <- str_replace_all(usercomment,"[:punct:]","") 
test 

您也可以串起来使用或运营商,所以你可以用一条线替换字符和空间不同的字符类。看下面的代码来修改数据帧的列名以清除它:

> colnames(order_table) <- str_replace_all(colnames(order_table),"[:punct:]|[:space:]","") 
相关问题