You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:34:42