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

基于单元格引用的条件均值:为iris数据集添加分类均值列

按分类为数据集添加对应均值列(iris示例)

方法1:使用dplyr的分组计算(推荐,匹配你现有代码风格)

通过group_by()按Species分组,再用mutate()计算每组的Petal.Width均值,组内所有行都会自动填充对应组的均值:

library(datasets)
library(dplyr) # 需要加载dplyr包

# 生成包含分类均值的新列
iris_with_avg <- iris %>%
  group_by(Species) %>%
  mutate(spec_avg_pet_width = mean(Petal.Width, na.rm = TRUE)) %>%
  ungroup() # 取消分组,避免影响后续操作

# 查看结果
head(iris_with_avg)

方法2:基础R的ave函数(无需额外包)

如果不想加载dplyr,用基础R的ave()函数也能实现,它会自动按分组计算并重复填充均值:

library(datasets)

iris$spec_avg_pet_width <- ave(iris$Petal.Width, iris$Species, FUN = mean)

# 验证分组均值结果
unique(iris[, c("Species", "spec_avg_pet_width")])

结果说明

两种方法都会得到你期望的对应值:

  • setosa组:0.246
  • versicolor组:1.326
  • virginica组:2.026

新增列可直接用于ggplot的分类排序,完全等效于Excel的AverageIfs功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:11:01