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

R语言使用aggregate函数按两列分组聚合的正确语法是什么

错误原因

你写法出错的核心是逻辑运算符使用错误:

  • 你用的|是逻辑“或”,对于任意一列来说,只要不是alpha或者不是beta就会被选中,最终所有列都会被纳入x参数的计算范围,甚至包含了你要分组的alpha、beta列,导致结果异常。
  • 这里应该用逻辑“且”&,筛选既不是alpha也不是beta的列作为计算对象。

正确写法1(修改你原有的索引写法)

aggregate(x = data[ , colnames(data) != "alpha" & colnames(data) != "beta"], 
          by = list(alpha = data$alpha, beta = data$beta), 
          FUN = sum)

注:给by里的列表元素命名可以让输出的分组列直接带上对应列名,不用后续手动修改

正确写法2(更简洁的公式语法,推荐)

aggregate支持公式接口,代码可读性更高:

aggregate(gamma ~ alpha + beta, data = data, FUN = sum)

如果你的数据集里有多个需要聚合的数值列,公式写法可以直接用. ~ alpha + beta,代表除了分组列之外的所有列都参与聚合计算。

运行输出结果

两种写法都会得到相同的正确聚合结果:

alpha beta gamma
1     1    1   0.3
2     1    2   0.5
3     2    3   0.5
4     2    4   0.8

内容的提问来源于stack exchange,提问作者Red Sleuth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:36:06