You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

关键说明

  1. 为什么之前的方法失效:

    • add_stat()函数仅针对tbl_summary类的描述性统计表格设计,不支持tbl_regression回归表格
    • 直接修改对象的_data元素仅改变底层数据,不会同步更新表格的显示结构(表头、列布局等)
  2. 自定义调整选项:

    • 可根据需求修改发病率的计算逻辑(比如不转换为百分比,直接保留原始小数:Incidence_Rate = round(.data$event_n / .data$n, 3))
    • 若需添加发病率的置信区间,可结合broom::tidy()提取模型信息后进一步计算,再通过modify_table_body加入

内容的提问来源于stack exchange,提问作者NedBeans0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:33:13