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

如何用gtsummary限制配对比较变量集?缺失值数据集处理

解决配对数据集的统计量计算问题

要实现仅保留ID匹配且配对无缺失的行来计算均值、样本量等统计量,核心思路是先预处理数据集:对每个变量,找出在两组(Set A/B)中都有非缺失值的ID,将其他ID对应的变量值转为NA,再用gtsummary生成统计表格。

步骤1:预处理数据集

使用tidyr和dplyr完成数据清洗:

library(gtsummary)
library(tidyr)
library(dplyr)

# 原始数据集
D <- tibble(Set = c(rep('A',4), rep('B', 4)),
            ID = c(1, 2, 3, 4, 1, 2, 3, 4),
            V1 = c(NA, 1, 2, 3, 1, 3, 2, 4),
            V2 = c(4, NA, NA, 5, 6, 7, 8, 9))

# 预处理:保留每个变量中A/B组均非缺失的ID,其余转为NA
D_clean <- D %>%
  pivot_wider(names_from = Set, values_from = c(V1, V2)) %>%
  # 对每个变量筛选符合条件的ID,其余设为NA
  mutate(
    # V1:仅保留A和B都非缺失的ID
    V1_A = ifelse(!is.na(V1_A) & !is.na(V1_B), V1_A, NA),
    V1_B = ifelse(!is.na(V1_A) & !is.na(V1_B), V1_B, NA),
    # V2:仅保留A和B都非缺失的ID
    V2_A = ifelse(!is.na(V2_A) & !is.na(V2_B), V2_A, NA),
    V2_B = ifelse(!is.na(V2_A) & !is.na(V2_B), V2_B, NA)
  ) %>%
  # 转回长格式
  pivot_longer(cols = -ID, 
               names_to = c("variable", "Set"), 
               names_sep = "_",
               values_to = "value") %>%
  pivot_wider(names_from = variable, values_from = value)

步骤2:生成符合要求的统计表格

用处理后的数据集生成表格,此时统计量会自动使用配对无缺失的样本:

D_clean %>%
  tbl_summary(
    by = Set, 
    type = list(everything() ~ 'continuous'),
    statistic = all_continuous() ~ "{mean} <{N_nonmiss}>",
    include = -ID,
    missing = 'no'
  ) %>%
  add_n() %>%
  add_p(test = everything() ~ 'paired.t.test', group = ID)

结果说明

  • 对于V1:仅保留ID2、3、4的配对数据,A组均值为(1+2+3)/3=2,B组均值为(3+2+4)/3=3,样本量N均为3
  • 对于V2:仅保留ID1、4的配对数据,A组均值为(4+5)/2=4.5,B组均值为(6+9)/2=7.5,样本量N均为2
  • 配对t检验的p值也会基于这些符合条件的配对数据计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:23:30