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

如何正确计算数据框分组均值?aggregate函数使用存疑

解决R语言aggregate函数计算分组均值的问题

我明白你遇到的问题啦——你用aggregate的时候出现警告,而且结果里包含了不必要的错误内容,这是因为你传入了整个数据框给aggregate,而它尝试对所有列(包括字符型的value列)应用mean函数,字符类型自然没法计算均值,所以才会弹出警告。

正确的实现方式

下面给你两种靠谱的aggregate用法,都能准确计算各组i列的均值:

方法1:公式式写法(推荐,更直观)

这种写法用公式i ~ value明确指定:按value列分组,计算i列的均值,代码如下:

values <- data.frame(value = c("a", "a", "a", "a", "a", "b", "b", "b", "c", "c", "c", "c"), 
                     i = c(1,2,3,4,5,6,7,8,9,10,11,12))

agg <- aggregate(i ~ value, data = values, FUN = mean)
print(agg)

运行后会得到清晰的结果:

value  i
1     a  3
2     b  7
3     c 10.5

方法2:指定聚合列与分组列的写法

如果你习惯用by参数,可以明确指定要聚合的是values$i列,同时给分组列命名(避免默认的Group.1列名):

agg <- aggregate(values$i, by = list(Group = values$value), FUN = mean)
# 可以重命名列让结果更清晰
colnames(agg) <- c("value", "mean_i")
print(agg)

为什么原来的代码会出错?

你原来的代码agg <- aggregate(values, by = list(values$value), FUN = mean)会遍历values的每一列:

  • 对i列(数值型):能正常计算均值
  • 对value列(字符型):mean函数无法处理字符,所以弹出警告,结果中该列会变成NA

这样既产生了警告,结果也不是你想要的纯净分组均值,所以才会觉得方法不正确。

内容的提问来源于stack exchange,提问作者Suhail Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:17:18