我的数据框(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都应该增加。
答案 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
希望这有帮助!