gtsummary工具技术问询:如何横向展示tbl_regression的add_glance_table模型统计及在tbl_uvregression中添加该统计
嘿,这两个问题都是gtsummary用户常遇到的布局和统计量定制需求,我来给你一步步拆解解决方案:
解决gtsummary表格的两个布局与统计量添加问题
问题1:将模型统计量(如C指数)横向移动至表格右侧
默认add_glance_table()会把模型统计放在表格下方,要把它移到右侧和主回归表横向拼接,可以通过分步骤创建表格再横向合并的方式实现,具体代码如下:
library(gtsummary) library(survival) # 1. 创建主回归表格 main_tbl <- coxph(Surv(time, event) ~ score, data = dat) %>% tbl_regression(exponentiate = TRUE) # 2. 创建模型统计表格(只保留需要的统计量,这里是C指数) glance_tbl <- coxph(Surv(time, event) ~ score, data = dat) %>% add_glance_table(concordance) %>% # 转换为适合横向合并的格式:只保留统计量行,重置列名 modify_table_body(~ .x %>% filter(row_type == "glance")) %>% modify_header(label ~ "模型统计量") # 3. 横向合并两个表格,调整列顺序让C指数在最后 final_tbl <- tbl_merge( tbls = list(main_tbl, glance_tbl), tab_spanner = c("**回归结果**", "**模型拟合度**") ) # 查看结果 final_tbl
如果需要添加多个模型统计量,只需要在add_glance_table()里指定多个参数(比如concordance, loglik),合并后它们会自然排列在右侧区域。
问题2:在tbl_uvregression中添加模型统计量(如C指数)
tbl_uvregression是批量单变量回归的工具,要给每个单变量模型添加对应的拟合统计量,不需要用add_glance_table(),而是用add_glance()函数并设置each = TRUE——这个参数是关键,它会给每个单变量模型单独计算统计量,而不是整体汇总。示例代码:
# 给每个单变量Cox模型添加C指数 uv_tbl <- tbl_uvregression( data = dat_score, method = survival::coxph, y = Surv(time, event), exponentiate = TRUE ) %>% # 添加每个模型的C指数,自定义列标签让表格更清晰 add_glance( include = concordance, each = TRUE, label = list(concordance ~ "C指数") ) # 查看结果 uv_tbl
如果需要添加多个统计量,直接在include里追加即可(比如include = c(concordance, loglik)),它们会作为新的列依次添加在表格右侧。
内容的提问来源于stack exchange,提问作者B_slash_
相关产品推荐
相关产品推荐

