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

在R语言中如何按另一列的ID值分组计算列的平均值?

在R中按ID分组计算列平均值的方法

下面是几种常用的实现方式,可根据数据规模和使用习惯选择:

基础R原生函数:tapply()

无需额外安装包,适合快速计算:

# 假设数据框为df,ID列是id,待计算均值的列是value
tapply(df$value, df$id, mean, na.rm = TRUE)
  • 参数说明:df$value是要计算均值的向量,df$id是分组依据的ID向量,mean是计算函数,na.rm = TRUE用于忽略缺失值(可选,根据数据情况调整)。
  • 返回结果:一个命名向量,名称为ID值,对应的值是该ID组的均值。

tidyverse工具链:dplyr包

代码可读性强,适合后续多步骤数据处理:

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

df %>%
  group_by(id) %>%
  summarise(mean_value = mean(value, na.rm = TRUE))
  • 逻辑:group_by(id)按ID对数据框分组,summarise()生成汇总结果,返回包含id和mean_value列的规整数据框。

高性能处理:data.table包

针对百万级以上大规模数据时,运算效率显著更高:

# 首次使用需先安装包
# install.packages("data.table")
library(data.table)

# 将普通数据框转换为data.table格式
dt <- as.data.table(df)
# 按ID分组计算均值
dt[, .(mean_value = mean(value, na.rm = TRUE)), by = id]
  • 语法特点:by = id指定分组列,.()定义汇总列,代码简洁且执行速度快。

内容的提问来源于stack exchange,提问作者Nicholas Kinberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:45:43