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

如何按组计算DT06系列变量的条件均值并生成统计表格?

解决方案

要实现按insuff_suff_res_cat分组,计算指定DT06变量的均值(仅纳入对应DT01变量为1的样本),可以结合dplyr和purrr高效处理变量对的条件筛选与分组统计,具体实现如下:

步骤1:定义目标变量列表

先明确需要计算的DT06变量及其对应的DT01筛选变量:

# 定义需计算均值的DT06变量
dt06_vars <- c(paste0("DT06_", 1:3), "DT06_7", paste0("DT06_", 10:19))
# 生成对应的DT01筛选变量(替换DT06为DT01)
dt01_vars <- gsub("DT06", "DT01", dt06_vars)

步骤2:批量计算分组均值

通过map2遍历每对DT01/DT06变量,完成条件筛选、分组统计后合并结果:

library(dplyr)
library(purrr)
library(tibble)

# 假设你的数据集名为df
grouped_mean_table <- map2(dt01_vars, dt06_vars, ~{
  df %>%
    # 仅保留对应DT01变量为1的样本
    filter(.data[[.x]] == 1) %>%
    # 按分组变量分组
    group_by(insuff_suff_res_cat) %>%
    # 计算DT06变量的均值,忽略缺失值
    summarize(!!.y := mean(.data[[.y]], na.rm = TRUE))
}) %>%
  # 合并所有变量的统计结果,保留所有分组(适配部分参与者无全部分组数据的情况)
  reduce(full_join, by = "insuff_suff_res_cat") %>%
  # 调整列顺序:分组列在前,DT06变量按定义顺序排列
  select(insuff_suff_res_cat, all_of(dt06_vars))

代码说明

  • .data[[.x]]和.data[[.y]]用于动态引用变量,避免硬编码;
  • !!.y用于将DT06变量名作为列名保留在结果中;
  • full_join确保所有存在数据的分组都被保留,不会因部分变量无某分组数据而丢失;
  • na.rm = TRUE处理样本中的缺失值,保证均值计算的有效性。

运行上述代码后,grouped_mean_table就是你需要的统计表格,每行对应一个insuff_suff_res_cat分组,每列对应一个DT06变量的均值。

内容的提问来源于stack exchange,提问作者Nadine M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:52:15