如何在tbl_uvregression生成的Poisson回归表中添加合计行
在tbl_uvregression生成的Poisson单变量分析表中添加合计行
需求说明
为tbl_uvregression()生成的Poisson回归单变量分析表格添加合计行,展示样本的总事件数与总暴露时间。
解决方案
通过以下步骤实现:
- 计算数据集的总事件数和总暴露时间;
- 生成回归表格时,添加分组的事件数和暴露时间统计列;
- 向表格主体插入合计行,填充预先计算的总统计量;
- 格式化表格,隐藏合计行中不需要的NA值。
完整代码
library(gtsummary) library(tidyverse) # 构造数据集 df = tibble( study_arm = c("C", "T", "C", "T", "C", "T", "C", "T"), events = c(3,4,12,6,7, 8,9,10), time_at_risk = c(100,200,400,200,300,100,500,500) ) # 计算总事件数与总暴露时间 total_stats <- df %>% summarize( total_events = sum(events), total_time = sum(time_at_risk) ) # 生成带合计行的回归表格 df %>% tbl_uvregression( y= events, method = glm, formula = "{y} ~ {x} + offset(log(time_at_risk))", method.args = list(family = poisson(link = log)), exponentiate = TRUE, include= -time_at_risk, hide_n = TRUE, pvalue_fun = function(x) style_pvalue(x, digits = 3), # 添加分组的事件数和暴露时间统计列 add_stat = list( ~style_number(sum(.data$events), digits = 0) %>% paste0(" 事件"), ~style_number(sum(.data$time_at_risk), digits = 0) %>% paste0(" 人时") ), stat_label = list( ~"事件数", ~"暴露时间" ) ) %>% # 插入合计行 modify_table_body( ~ .x %>% bind_rows( tibble( variable = "合计", row_type = "label", label = "合计", n = NA, estimate = NA, conf.low = NA, conf.high = NA, p.value = NA, stat_1 = paste0(total_stats$total_events, " 事件"), stat_2 = paste0(total_stats$total_time, " 人时") ) ) ) %>% # 隐藏合计行中无关的NA值 modify_fmt_fun( list(estimate ~ NA, conf.low ~ NA, conf.high ~ NA, p.value ~ NA) )
代码说明
add_stat参数用于在表格中新增分组的事件数和暴露时间列,方便对比各组与合计的差异;modify_table_body通过bind_rows插入合计行,填充总统计量;modify_fmt_fun用于隐藏合计行中回归相关的NA值,让表格更整洁。
内容的提问来源于stack exchange,提问作者Faith Magut
相关产品推荐
相关产品推荐

