You need to enable JavaScript to run this app. R语言中一次性聚合data frame多列并对不同列计算不同统计量的方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

R语言中一次性聚合data frame多列并对不同列计算不同统计量的方法咨询

R DataFrame 按列分组多统计量聚合方案

需求说明

按name列分组,针对不同列分别计算对应统计量:

  • v1:均值
  • v2:标准差
  • v3:最大值
  • v4:总和

推荐方案:tidyverse/dplyr 实现

这是目前R生态中最简洁的分组聚合实现方式,原生支持不同列指定不同聚合函数:

# 未安装依赖先执行 install.packages("dplyr")
library(dplyr)

# 替换df为你自己的数据集变量名
agg_result <- df %>%
  # 按name列分组
  group_by(name) %>%
  # 分别对不同列执行指定统计计算,na.rm=TRUE自动忽略空值/NaN
  summarise(
    v1_mean = mean(v1, na.rm = TRUE),
    v2_sd = sd(v2, na.rm = TRUE),
    v3_max = max(v3, na.rm = TRUE),
    v4_sum = sum(v4, na.rm = TRUE)
  )

注意:如果单个name分组下只有1条数据,标准差计算结果会返回NaN,属于正常统计逻辑,单个值无标准差

基础R aggregate 实现

基础包的aggregate函数原生不支持直接为不同列指定不同聚合函数,需分开计算后合并:

# 分别计算各列统计量
v1_agg <- aggregate(v1 ~ name, data = df, FUN = mean, na.rm = TRUE)
v2_agg <- aggregate(v2 ~ name, data = df, FUN = sd, na.rm = TRUE)
v3_agg <- aggregate(v3 ~ name, data = df, FUN = max, na.rm = TRUE)
v4_agg <- aggregate(v4 ~ name, data = df, FUN = sum, na.rm = TRUE)

# 合并所有统计结果
agg_result <- merge(merge(merge(v1_agg, v2_agg, by = "name"), v3_agg, by = "name"), v4_agg, by = "name")
# 重命名列名
colnames(agg_result) <- c("name", "v1_mean", "v2_sd", "v3_max", "v4_sum")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:18:04