如何为gtsummary::tbl_regression输出添加基于现有列计算的新列
给gtsummary回归表格添加发病率列的解决方案
问题背景
需要基于tbl_regression生成的表格,利用add_n()和add_nevent()生成的"N"、"Event N"列计算并添加"Incidence Rate"列,此前尝试add_stat()(不适用于回归表格)和直接修改_data元素(无法同步到显示)均失败。
正确实现代码
library(gtsummary) library(dplyr) # 拟合模型并生成带N和事件数的回归表格 add_nevent_ex <- glm(response ~ trt, trial, family = binomial) %>% tbl_regression() %>% add_n() %>% add_nevent() %>% # 计算发病率并格式化 modify_table_body( mutate, # 计算发病率(转换为百分比,保留1位小数) Incidence_Rate = round(.data$event_n / .data$n * 100, 1), # 格式化为带%的文本 Incidence_Rate = paste0(Incidence_Rate, "%") ) %>% # 将新列添加到表格显示,设置表头和对齐方式 modify_table_styling( columns = Incidence_Rate, label = "**Incidence Rate**", align = "center" ) # 查看最终表格 add_nevent_ex
关键说明
为什么之前的方法失效:
add_stat()函数仅针对tbl_summary类的描述性统计表格设计,不支持tbl_regression回归表格- 直接修改对象的
_data元素仅改变底层数据,不会同步更新表格的显示结构(表头、列布局等)
自定义调整选项:
- 可根据需求修改发病率的计算逻辑(比如不转换为百分比,直接保留原始小数:
Incidence_Rate = round(.data$event_n / .data$n, 3)) - 若需添加发病率的置信区间,可结合
broom::tidy()提取模型信息后进一步计算,再通过modify_table_body加入
- 可根据需求修改发病率的计算逻辑(比如不转换为百分比,直接保留原始小数:
内容的提问来源于stack exchange,提问作者NedBeans0
相关产品推荐
相关产品推荐

