如何将gtsummary()生成的长表格拆分为多个短表格?
拆分gtsummary长表格的高效方法
当然可以拆分gtsummary生成的长表格!你之前手动拆分数据集再逐个汇总的方法虽然可行,但效率不高,还容易出现格式不一致的问题。gtsummary包里其实提供了专门的工具tbl_split()来完成这个需求,用起来更简洁高效。
方法示例
先基于你提供的数据集做基础演示:
library(gtsummary) # 制作包含若干待汇总变量的数据集 trial2 <- trial %>% select(age, grade, response, trt) # 生成原始汇总表格 table1 <- tbl_summary(trial2)
1. 按指定变量组拆分
如果你想把表格拆分成「人口学+肿瘤分级」和「治疗+应答」两组,可以直接指定变量列表:
# 拆分成两个表格,每组包含2个变量 split_tables <- table1 %>% tbl_split(variables = list(c(age, grade), c(response, trt))) # 查看第一个拆分后的表格 split_tables[[1]] # 查看第二个拆分后的表格 split_tables[[2]]
2. 每个变量单独生成表格
如果希望每个变量对应一个独立表格,结合purrr包可以快速实现,不用重复写多段汇总代码:
library(purrr) # 遍历所有变量,逐个拆分出单独表格 split_single_var_tables <- map(colnames(trial2), ~table1 %>% tbl_split(variables = all_of(.x))) # 逐个输出表格(比如查看年龄的汇总表) split_single_var_tables[[1]]
3. 给拆分后的表格添加自定义标题
还可以给每个拆分后的表格设置专属标题,让输出更清晰:
split_tables_with_titles <- table1 %>% tbl_split(variables = list(c(age, grade), c(response, trt))) %>% set_names(c("人口学特征与肿瘤分级", "治疗方案与应答情况")) # 查看带标题的表格 split_tables_with_titles[["人口学特征与肿瘤分级"]]
为什么这个方法更好?
- 不用重复创建多个数据集,也不用重复调用
tbl_summary(),代码更简洁 - 拆分后的表格会完全继承原始表格的格式设置(比如统计量格式、变量标签、表头样式等),避免手动汇总可能出现的格式不一致问题
- 变量分组更灵活,你可以根据需求随意组合变量,而不是局限于单个变量拆分
内容的提问来源于stack exchange,提问作者TarJae
相关产品推荐
相关产品推荐

