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

R语言中如何按类别分组为数据框添加分组平均值列

问题原因

你之前的代码直接对data.frameOG的全量Size列求均值,没有做按类别分组、以及两个数据框按类别匹配的逻辑,所以所有行都会被填充同一个全局平均值,无法得到分组级别的均值结果。
实现前先确认:两个数据框都存相同含义的类别列(下文示例统一用category代指该列名,你替换成自己数据里实际的列名即可)。

实现方法

Base R 原生实现(无需安装额外包)

  1. 先在原始数据框中按类别计算分组平均Size
# 按category列分组,对每组的Size求均值
category_mean <- aggregate(
  formula = Size ~ category,
  data = data.frameOG,
  FUN = mean,
  na.rm = TRUE # 若Size列存在缺失值,加该参数自动忽略缺失值计算
)
  1. 将分组均值按类别匹配到绘图用的目标数据框
data.frame$averagesize <- category_mean$Size[match(data.frame$category, category_mean$category)]

dplyr 实现(代码更简洁,适合日常数据处理流程)

先加载dplyr包,通过左连接直接把分组计算好的均值合并到目标数据框:

library(dplyr)

data.frame <- data.frame %>%
  left_join(
    data.frameOG %>%
      group_by(category) %>%
      summarise(averagesize = mean(Size, na.rm = TRUE)),
    by = "category"
  )
注意事项
  • 匹配前建议先检查两个数据框的类别列取值是否一致,若存在某类别只在一个数据框中出现的情况,匹配后对应行的averagesize会返回NA,需要提前处理类别取值不一致的问题。
  • 不要直接对未分组的全量列调用mean()赋值,该操作不会自动按行匹配类别属性,只会把单一的全局计算结果填充到整列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:03:20