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

在R语言中按分组计算均值并合并至原数据集的方法

解决方案

要把分组计算的均值绑定到原数据集,核心是避免用summarise压缩行数,以下是两种常用方法:

方法一:直接用mutate生成均值列

mutate在分组后会保留原数据的所有行,为每组的每一行添加上对应组的均值:

library(dplyr)
df <- data.frame(                              
  Cat  = c("A","B","C","B","C","A","C","A","B"),       
  Fre = c(9,5,0,2,7,8,1,3,7))

df_with_mean <- df %>%
  group_by(Cat) %>%
  mutate(Mean = round(mean(Fre), 2)) %>% # 保留两位小数匹配示例格式
  ungroup() # 可选,取消分组状态

print(df_with_mean)

运行后输出就是你期望的结果:

Cat Fre Mean
1   A   9 6.67
2   B   5 4.67
3   C   0 2.67
4   B   2 4.67
5   C   7 2.67
6   A   8 6.67
7   C   1 2.67
8   A   3 6.67
9   B   7 4.67

方法二:先生成均值表再合并

如果需要单独保存分组均值的结果,可以先计算均值表,再通过left_join匹配到原数据:

# 生成分组均值表
mean_table <- df %>%
  group_by(Cat) %>%
  summarise(Mean = round(mean(Fre), 2)) %>%
  ungroup()

# 合并到原数据集
df_with_mean <- df %>%
  left_join(mean_table, by = "Cat")

print(df_with_mean)

这种方法会得到和方法一完全一样的输出,适合需要复用均值表的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:35:14