如何在gt_summary的tbl_summary中为配对样本正确使用add_n()?
配对样本中用
add_n()显示真实参与者数量的解决办法 在配对设计里,add_n()默认会统计每组的观测总数(也就是实际参与者数×2),要让它显示真实的独立参与者数量,有两种实用方法:
方法1:自定义add_n()的统计规则
直接通过statistic参数指定统计唯一id的数量,代码修改后如下:
ss %>% tbl_summary(by = Day, include = -id, type = all_continuous() ~ "continuous2", label = list(value ~ "p"), statistic = list(all_continuous() ~ "{mean} ({sd})")) %>% add_difference(test = list(value ~ "paired.t.test"), group = id) %>% # 统计每个分组下的唯一id数量,即真实参与者数 add_n(statistic = "{n_distinct(id)}") %>% modify_header(all_stat_cols() ~ "**{level}**")
方法2:先算参与者数再手动替换表格内容
如果需要更灵活的调整,可以先算出总参与者数,再替换add_n()生成的行数据:
# 先计算真实的参与者数量 participant_count <- n_distinct(ss$id) ss %>% tbl_summary(by = Day, include = -id, type = all_continuous() ~ "continuous2", label = list(value ~ "p"), statistic = list(all_continuous() ~ "{mean} ({sd})")) %>% add_difference(test = list(value ~ "paired.t.test"), group = id) %>% add_n() %>% # 把N行的数值替换成真实参与者数 modify_table_body( ~ .x %>% mutate( stat_0 = ifelse(row_type == "label" & label == "N", participant_count, stat_0), stat_3 = ifelse(row_type == "label" & label == "N", participant_count, stat_3) ) ) %>% modify_header(all_stat_cols() ~ "**{level}**")
补充说明
- 方法1最省事,因为配对样本里两个分组的
id完全对应,统计出来的唯一id数量就是真实参与者数,两组结果一致。 - 方法2适合需要对表格做更多自定义修改的场景,先保留默认
add_n()的结构,再精准替换数值。
内容的提问来源于stack exchange,提问作者arshad
相关产品推荐
相关产品推荐

