R 计算关键字列表在字符串列中出现的总次数
我有一个数据框R 计算关键字列表在字符串列中出现的总次数,r,R,我有一个数据框df,其中包含一个名为strings的列。本栏中的值是一些句子 例如: id strings 1 "I like you" 2 "I like you, too." 3 "I like you so much 4 "I like you very much" 5 "I don't like you" 现在,我有一个关键字列表 ["I", "don't", "like", "you"] 如何制作另一个数据框,该数据框存储上一个数据框列
df
,其中包含一个名为strings
的列。本栏中的值是一些句子
例如:
id strings
1 "I like you"
2 "I like you, too."
3 "I like you so much
4 "I like you very much"
5 "I don't like you"
现在,我有一个关键字列表
["I", "don't", "like", "you"]
如何制作另一个数据框,该数据框存储上一个数据框列中每个关键字的出现总数
keyword frequency
I 5
don't 1
like 5
you 5
我正在考虑使用for循环来迭代字符串列表,并为原始数据帧中的每个关键字创建一列。然后计算每行中出现的次数,最后将列相加。但是,由于关键字列表非常大,这样做的效率非常低。我们可以在
关键字列表上使用sapply
,并使用grepl
计算出现关键字的行数
keywords <- c("I", "don't", "like", "you")
stack(sapply(keywords, function(x) sum(grepl(paste0("\\b", x, "\\b"), df$strings))))
# values ind
#1 5 I
#2 1 don't
#3 5 like
#4 5 you
上述方法将给出包含该关键字的行数。如果您想查找特定关键字在所有语句中出现的总次数,我们可以使用stru count
fromstringr
sapply(keywords, function(x) sum(stringr::str_count(df$strings, x)))
或者将字符串拆分为单词并计算出现的次数
sapply(keywords, function(x) sum(grepl(x, unlist(strsplit(df$strings, "\\s+")))))
sapply(keywords, function(x) sum(grepl(x, unlist(strsplit(df$strings, "\\s+")))))