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

如何在R中用summarise函数计算多列均值并生成指定列名?

如何在R中分组计算多列均值并输出指定列名

你可以通过两种方式实现需求,以下是修正后的完整代码:

方法1:逐个指定列名计算

适合列数较少的场景,清晰直观:

df <- read.csv("G:/Data.csv", header = T)
df <- mutate(df, Date = dmy(Date), Month = month(Date), Year = year(Date))
df <- group_by(df, Year, Month)
# 分别为每列计算均值,指定对应的输出列名
df <- summarise(df, 
                T_avg_mean = mean(T_avg, na.rm = TRUE),
                T_max_mean = mean(T_max, na.rm = TRUE),
                T_min_mean = mean(T_min, na.rm = TRUE))
# 写入csv时去掉行名,避免生成额外的X列
write.csv(df, 'G:/Data_avg.csv', row.names = FALSE)

方法2:使用across批量处理

适合列数较多的场景,代码更简洁:

df <- read.csv("G:/Data.csv", header = T)
df <- mutate(df, Date = dmy(Date), Month = month(Date), Year = year(Date))
df <- group_by(df, Year, Month)
# 批量处理指定列,自动生成带_mean后缀的列名
df <- summarise(df, across(c(T_avg, T_max, T_min), ~mean(.x, na.rm = TRUE), .names = "{col}_mean"))
write.csv(df, 'G:/Data_avg.csv', row.names = FALSE)

你之前尝试失败的原因:

  • 第一种写法 mean(T_avg, T_max, T_min):mean()函数仅接受单个数值向量作为第一个参数,无法同时传入多列,因此会触发参数错误。
  • 第二种写法重复使用result = ...:在summarise中,重复的列名会被后续赋值覆盖,最终只会保留最后一个计算结果(即T_min的均值),无法得到三列数据。

注:添加na.rm = TRUE是为了忽略缺失值,避免因数据中存在NA导致均值计算结果为NA,可根据你的实际数据情况选择是否保留。

内容的提问来源于stack exchange,提问作者Alexia k Boston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:37:03