如何用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
相关产品推荐
相关产品推荐

