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

R语言如何仅对数据子集计算均值,结果作为新列填充到所有观测行?

解决方案

你不需要对数据做筛选拆分,直接在按受试者分组后,对mean()传入符合周期条件的子集计算即可,代码如下:

library(dplyr)

dataframe <- dataframe %>%
  # 按受试者ID分组
  group_by(subjet_id) %>%
  mutate(
    # 原有的整体均值
    invest_mean = mean(invest),
    # 短期均值:仅取1-30期的invest值计算
    short_run_mean = mean(invest[period %in% 1:30], na.rm = TRUE),
    # 长期均值:仅取31-60期的invest值计算
    long_run_mean = mean(invest[period %in% 31:60], na.rm = TRUE)
  ) %>%
  # 可选:解除分组避免后续操作受分组影响
  ungroup()

原理说明

按subjet_id分组后,每个分组内的period和invest都是属于同一个受试者的向量,用方括号筛选出符合周期条件的invest值计算均值,得到的是单值,会自动填充到该受试者的所有行,不会出现空值。参数na.rm = TRUE可选,用于处理invest存在空值的场景,如果你的数据没有空值可以删掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:18:00