如何在R语言数据框中提取唯一列值并统计出现次数
解决方法:按
word2分组并求和n值 嘿,我明白你想要的效果了——就是把word2列里的每个唯一词汇只保留一行,同时把它们对应的n值全部加起来对吧?这在数据处理里是很常见的分组聚合需求,我给你两种常用的实现方法:
方法一:使用dplyr包(tidyverse风格,代码更直观)
如果你还没安装dplyr包,先运行install.packages("dplyr")完成安装,之后就可以用下面的代码:
# 加载dplyr包 library(dplyr) # 你的原始数据框 df <- data.frame(word1=c("not","but","not","not","never","nor","never","not"), word2=c("beautiful","nice","strong","awesome","beautiful","beautiful","strong","nice"), n=c(400,378,29,10,222,43,620,90)) # 分组聚合:按word2分组,对n列求和 result_df <- df %>% group_by(word2) %>% summarize(total_n = sum(n)) # 查看最终结果 print(result_df)
这段代码的逻辑很清晰:group_by(word2)把数据按word2的每个唯一值分成不同的组,summarize(total_n = sum(n))则对每个组里的n值求和,生成名为total_n的新列,最终每个word2只会出现一次。
方法二:使用base R的aggregate函数(无需额外安装包)
如果你不想加载第三方包,用R原生的aggregate函数也能实现同样的效果:
# 你的原始数据框 df <- data.frame(word1=c("not","but","not","not","never","nor","never","not"), word2=c("beautiful","nice","strong","awesome","beautiful","beautiful","strong","nice"), n=c(400,378,29,10,222,43,620,90)) # 分组求和 result_df_base <- aggregate(n ~ word2, data = df, FUN = sum) # 查看最终结果 print(result_df_base)
这里n ~ word2表示以word2为分组变量,对n列应用sum函数,直接输出聚合后的结果。
最终结果示例
不管用哪种方法,你都会得到如下格式的结果:
word2 total_n 1 beautiful 665 2 awesome 10 3 nice 468 4 strong 649
内容的提问来源于stack exchange,提问作者Lucinho91
相关产品推荐
相关产品推荐

