使用dplyr统计词频时如何保留对应情感分数
解决方法
因为你的数据中每个单词对应唯一的情感分数,所以可以通过以下两种dplyr方法实现统计词频的同时保留情感分数,且结果无重复:
方法1:分组后汇总计数
利用group_by()同时按单词和情感分数分组,再用summarize()统计每组的数量:
library(dplyr) wrd_cnt <- df %>% group_by(words, senti_score) %>% summarize(n = n(), .groups = "drop") %>% # .groups = "drop"取消分组状态 arrange(desc(n)) # 按词频降序排序,可选
方法2:直接在count中指定多分组字段
count()函数支持传入多个分组变量,由于每个单词的情感分数固定,同时按words和senti_score分组后,统计结果自然是每个单词一行:
library(dplyr) wrd_cnt <- df %>% count(words, senti_score, sort = TRUE)
两种方法最终都会得到你期望的结果:
| words | senti_score | n |
|---|---|---|
| danger | -0.8 | 2 |
| here | 0 | 2 |
| happy | 0.6/0.7 | 2 |
注:你的代码示例和表格中
happy的情感分数不一致(代码是0.7,表格是0.6),实际运行时会以你数据中的真实值为准。
内容的提问来源于stack exchange,提问作者Jonnytheriver
相关产品推荐
相关产品推荐

