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

如何按R语言DataFrame中列分组,将列值替换为分组平均值

在R中按分组替换列值为组内平均值的实现方法

方法1:使用Base R原生函数

借助ave()函数可以快速实现,它专门用于按分组计算并返回与原向量长度一致的结果,完美适配你的需求:

# 假设你的数据框名为df
df$col2 <- ave(df$col2, df$col1, FUN = mean)

ave()的逻辑很直接:第一个参数是需要处理的目标列(df$col2),第二个参数是分组依据(df$col1),FUN = mean指定计算每组的平均值,结果会自动匹配原数据的行顺序,直接覆盖原col2的值。

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

如果更习惯tidyverse的语法,用group_by() + mutate()的组合更直观,也便于后续扩展其他数据处理操作:

先确保安装并加载dplyr:

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

执行分组替换:

df <- df %>%
  group_by(col1) %>%
  mutate(col2 = mean(col2, na.rm = TRUE)) %>% # 添加na.rm=TRUE可忽略分组内的缺失值
  ungroup() # 取消分组状态,避免影响后续操作

验证处理结果

执行完代码后,打印数据框即可确认结果符合预期:

print(df)

输出结果:

col1col2
A3.5
A3.5
B6
B6

两种方法都能高效处理大型数据集,无需手动遍历每个分组,计算性能稳定且代码简洁易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:50:36