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

如何在R语言中按ID分组计算DataFrame的均值?

嘿,我来帮你搞定这个分组计算均值的问题!

首先,先把你的示例数据框构造出来,方便测试:

df <- data.frame(
  id = c(1,2,3,1,1,3,2),
  value = c(100,200,100,100,100,200,300)
)

按照你写的循环思路完成实现

你已经拿到了唯一的ID列表,接下来只需要在循环里筛选出每个ID对应的value值,计算均值后存起来就行:

ids <- unique(df$id)
# 创建一个空向量来存结果,用ID作为名字方便查看
mean_results <- numeric(length(ids))
names(mean_results) <- ids

for(i in ids){
  # 筛选当前ID对应的所有value
  current_vals <- df$value[df$id == i]
  # 计算均值并赋值到结果向量中
  mean_results[as.character(i)] <- mean(current_vals)
}

# 输出结果
mean_results

运行这段代码后,你会得到预期的结果:1 2 3 100 250 150。

更高效的R风格写法(推荐)

其实在R里,手动写循环不是最简洁的方式,给你推荐两种常用的高效方法:

方法1:使用基础R的aggregate函数

一行代码就能搞定分组均值:

aggregate(value ~ id, data = df, FUN = mean)

输出会是一个数据框,清晰展示每个ID对应的均值:

id value
1  1   100
2  2   250
3  3   150

方法2:使用dplyr包(tidyverse风格)

如果你习惯更直观的管道写法,可以用dplyr:

# 首次使用需要先安装:install.packages("dplyr")
library(dplyr)

df %>%
  group_by(id) %>%
  summarise(mean_value = mean(value))

这个输出同样是结构清晰的数据框,后续做数据处理也更方便。

内容的提问来源于stack exchange,提问作者Kev Schl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:29:11