如何用R的gtsummary合并展示多组单/多变量逻辑回归结果?
在gtsummary中并列展示单/多变量逻辑回归结果的规范方法
无需手动构造tibble或拆分表格,gtsummary官方提供的tbl_merge()函数是实现这类需求的最优方案,以下以trial数据集为例演示完整流程:
1. 加载依赖与数据
library(gtsummary) library(dplyr) library(purrr) # 用于批量处理模型 data(trial)
2. 按stage批量构建单/多变量模型表格
单变量逻辑回归(UV)表格列表
针对每个stage的数据集,对所有自变量做单变量逻辑回归:
# 按stage拆分数据集 trial_by_stage <- trial %>% group_split(stage) # 批量生成单变量回归表格 uv_tbl_list <- map( trial_by_stage, ~ tbl_uvregression( data = .x, method = glm, y = response, method.args = list(family = binomial), exponentiate = TRUE # 输出OR值而非系数 ) )
多变量逻辑回归(MV)表格列表
针对每个stage的数据集,纳入指定自变量做多变量逻辑回归:
mv_tbl_list <- map( trial_by_stage, ~ tbl_regression( glm(response ~ age + marker + trt, data = .x, family = binomial), exponentiate = TRUE ) )
3. 给表格添加分组标识
为了合并后区分不同stage的UV/MV结果,给每个表格的变量列添加标签:
# 标记单变量表格 uv_tbl_labeled <- uv_tbl_list %>% map2(c("Stage I 单变量", "Stage II 单变量"), ~ .x %>% modify_header(label = .y)) # 标记多变量表格 mv_tbl_labeled <- mv_tbl_list %>% map2(c("Stage I 多变量", "Stage II 多变量"), ~ .x %>% modify_header(label = .y))
4. 合并表格并优化样式
用tbl_merge()将所有表格按变量行对齐合并,同时添加跨列标题区分UV/MV:
final_table <- tbl_merge( tbls = c(uv_tbl_labeled, mv_tbl_labeled), tab_spanner = c("**单变量回归**", "**单变量回归**", "**多变量回归**", "**多变量回归**") ) # 可选:调整表格样式,比如加粗变量名、设置缺失值显示文本 final_table %>% modify_styling(columns = label, bold = TRUE) %>% modify_table_styling(missing_text = "-")
关键说明
tbl_merge()会自动匹配不同表格中的变量行,缺失的变量会填充指定的缺失文本,无需手动对齐- 合并后的表格仍保留gtsummary的所有样式调整能力,也可直接调用gt包的函数做更精细的自定义(如
gt::tab_options()) - 完全不需要切换到gt手动构建表格,用gtsummary的原生函数即可实现规范、高效的结果展示
内容的提问来源于stack exchange,提问作者user23499609
相关产品推荐
相关产品推荐

