我如何计算我的评论中有多少包含列表中的单词?

时间:2017-07-31 17:41:25

标签: r dataframe

  

我的数据框(df)如下所示:

    Comments  
-----------------
1 | comment1  
2 | comment2  
3 | comment3  
4 | comment4

...

我创建了2个列表如下:

list1<-c("money","finance","aid")  
list2<-c("major","degree")    

我想搜索数据框中的行,这些行包含来自不同人的评论。如果在特定行中找到list1中的任何字词,则counter1应该增加,当找到list2中的字词counter2时,应增加

我希望得到结果:

counter1=10 ; counter2=25

注意:我不希望在每个词的频率上递增计数器。例如,如果注释包含“money”和“finance”,则计数器应仅增加一次。但如果它有“钱”和“主要”,则counter1和counter2都应该增加。

1 个答案:

答案 0 :(得分:0)

您可以使用|折叠您的列表,因此如果找到匹配项,grepl将返回TRUE。例如:

示例数据

comments = data.frame(text=c("only list 1 since money","only list 2 since major","both lists money major","money finance list 1 once"))

                       text
1   only list 1 since money
2   only list 2 since major
3    both lists money major
4 money finance list 1 once

<强>代码

list1<-c("money","finance","aid")  
list2<-c("major","degree")    

counter1=sum(grepl(paste(list1,collapse="|"),comments$text))
counter2=sum(grepl(paste(list2,collapse="|"),comments$text))

<强>结果

counter1: 3
counter2: 2

希望这有帮助!