在gtsummary包中为分组变量添加百分比
在gtsummary分组表头添加样本量与百分比
问题背景
基于pubh包的Bernard数据集,以fate(死亡状态)为分组变量创建gtsummary汇总表时,需要在分组表头的Alive、Dead旁添加对应样本量及占比(如Alive, N = 96 (67%))。尝试将fate列为分类变量并指定百分比统计量的方法无效,希望直接在tbl_summary()流程内完成配置,无需提前用mutate生成新变量。
原示例代码:
library(pubh) library(dplyr) library(gtsummary) data("Bernard") na.omit(Bernard) %>% select(fate, race, apache) %>% tbl_summary(by = fate, type = list(race ~ "categorical", apache ~ "continuous"), statistic = list(all_continuous() ~ "{min}, {max}", all_categorical() ~ "{p}%"), digits = list(all_continuous() ~ 2, all_categorical() ~ 2), missing_text = "(Missing)" ) %>% add_stat_label() %>% modify_header(label ~ "**Variable**") %>% modify_caption("**Table 1. Summary statistics by Mortality Status**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Fate**") %>% bold_labels() %>% italicize_labels() %>% italicize_levels()
解决方案
利用gtsummary的modify_header()函数,结合内置的.data对象动态获取分组样本量、总样本量及分组标签,直接拼接出带样本量和百分比的表头。
修改后的完整代码:
library(pubh) library(dplyr) library(gtsummary) data("Bernard") na.omit(Bernard) %>% select(fate, race, apache) %>% tbl_summary(by = fate, type = list(race ~ "categorical", apache ~ "continuous"), statistic = list(all_continuous() ~ "{min}, {max}", all_categorical() ~ "{p}%"), digits = list(all_continuous() ~ 2, all_categorical() ~ 2), missing_text = "(Missing)" ) %>% add_stat_label() %>% # 关键:修改分组表头,添加样本量与百分比 modify_header( label ~ "**Variable**", stat_1 ~ paste0("**{.data$by_labels[1]}**", ", N = {.data$N[1]} ({round(.data$N[1]/.data$N_tbl*100, 1)}%)"), stat_2 ~ paste0("**{.data$by_labels[2]}**", ", N = {.data$N[2]} ({round(.data$N[2]/.data$N_tbl*100, 1)}%)") ) %>% modify_caption("**Table 1. Summary statistics by Mortality Status**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Fate**") %>% bold_labels() %>% italicize_labels() %>% italicize_levels()
代码说明
.data$by_labels:获取分组变量的标签(即Alive、Dead).data$N:获取每个分组的样本量.data$N_tbl:获取总样本量- 通过
round()函数控制百分比的小数位数,这里保留1位,可根据需求调整
执行后,表头会显示:**Alive**, N = 96 (67.1%) | **Dead**, N = 47 (32.9%)
内容的提问来源于stack exchange,提问作者PTS390
相关产品推荐
相关产品推荐

