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

如何多次使用filter函数按条件计算均值并追加至原数据集?

按条件分组计算平均值并追加到数据集

原始数据集

df <- data.frame(id = c(1,2,3,4,5,6,7), 
                 cond = c("Y", "Y", "N", "Y", "N", "Y", "N"), score = c(3,4,5,2,1,2,9))

方法一:使用dplyr包(tidyverse生态)

通过分组后生成对应组的平均值列,是最直观的处理方式:

library(dplyr)

df_result <- df %>%
  group_by(cond) %>%
  mutate(average = mean(score)) %>%
  ungroup() # 按需取消分组状态,不影响最终结果展示

print(df_result)

运行后每个cond组的平均值会自动填充到该组所有行的average列,完全匹配你需要的效果。

方法二:Base R原生实现(无需额外包)

先计算分组均值,再通过匹配关联到原数据集:

# 计算每个cond对应的平均值
cond_means <- tapply(df$score, df$cond, mean)
# 将均值匹配到原数据的每一行
df$average <- cond_means[match(df$cond, names(cond_means))]

print(df)

tapply负责按cond分组计算均值,match函数完成每行cond与对应均值的关联,最终生成目标列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:15:38