在R中提取包含特殊字符的单词

时间:2016-03-24 14:47:57

标签: regex r

我想要提取有" @"在其中的符号并删除所有 换句话说。所以,我的数据将如下所示:

Author Content 
Name1  Hi,@tim how are you @Blue. 
Name2  @xyz, are you ok? 
Name3  it is good @my @you

其中作者和内容是列名。

我想要以下格式的数据:

Author Content
Name1  tim
Name1  Blue
Name2  xyz
Name3  my
Name3  you

所以,我只想要有" @"与它的符号,并放弃其他一切。

1 个答案:

答案 0 :(得分:3)

我们可以使用str_extract_all中的stringr来提取“内容”中\\w+后面的字词@}。列由'作者'组成。在这里,我使用data.table方法通过操作调用组(在将' data.frame'转换为' data.table'(setDT(df1))之后。 / p>

library(data.table)
library(stringr)
setDT(df1)[, .(Content=unlist(str_extract_all(Content, 
                                     "(?<=@)\\w+"))), by = Author]
#    Author Content
#1:  Name1     tim
#2:  Name1    Blue
#3:  Name2     xyz
#4:  Name3      my
#5:  Name3     you

数据

df1 <- structure(list(Author = c("Name1", "Name2", 
"Name3"), Content = c("Hi,@tim how are you @Blue.", 
"@xyz, are you ok?", "it is good @my @you")), 
.Names = c("Author", "Content"), class = "data.frame", 
 row.names = c(NA, -3L))