在gtsummary 2.0.1中如何将表头加权N改为未加权n?
解决方法
要把gtsummary生成的调查表格表头加权N替换为未加权样本量,按以下两步操作即可:
1. 提取未加权总样本量
从调查设计对象中直接获取原始数据的行数,就是未加权的总样本数:
unweighted_n <- nrow(svy_design$variables)
2. 修改表头文本
用modify_header()函数直接替换表头里的加权N值,完整代码示例如下:
library(gtsummary) library(survey) data(api) # 构建调查设计对象 svy_design <- svydesign(id = ~1, weights = ~pw, data = api) # 生成包含未加权n的统计表格 tbl <- svy_design %>% tbl_svysummary( by = stype, include = c(awards, sch.wide), statistic = list(all_categorical() ~ "{n_unweighted} ({p}%)") ) # 计算未加权总样本量 unweighted_n <- nrow(svy_design$variables) # 替换表头的加权N为未加权n tbl_final <- tbl %>% modify_header(all_stat_cols() ~ "**{level}**<br>N = {unweighted_n}") # 输出最终表格 tbl_final
如果是无分组的单列表格,只需调整modify_header的目标列:
tbl_final <- tbl %>% modify_header(stat_0 ~ "**Overall**<br>N = {unweighted_n}")
原理说明
gtsummary默认在表头显示加权样本量,但通过modify_header()可以完全自定义表头内容。我们先获取原始数据的未加权总行数,再将表头中的加权N文本直接替换为该数值即可。
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

