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

如何在R的tbl_uvregression输出表中添加Person-years与每千人人年发病率

在R的tbl_uvregression表格中添加人年数与每1000人年发病率

要在tbl_uvregression生成的单变量Cox回归表格中加入人年数和每1000人年发病率,可以通过gtsummary包的add_stat()函数自定义统计量实现,具体步骤如下:

1. 自定义统计量计算函数

先编写一个函数,用于计算每个变量分组的人年数和发病率:

get_person_years <- function(data, variable, ...) {
  # 提取当前分组的随访时间和事件状态
  follow_time <- data[[variable]][[".time"]]
  events <- data[[variable]][[".event"]]
  
  # 计算人年数(假设随访时间单位为天,转换为年)
  person_years <- sum(follow_time) / 365.25
  # 计算每1000人年发病率
  incidence_rate <- sum(events) / person_years * 1000
  
  # 格式化数值,保留1位小数
  list(
    person_years = style_number(person_years, digits = 1),
    incidence_rate = style_number(incidence_rate, digits = 1)
  )
}

注:如果你的随访时间timesurvival28_2_year单位不是天,需调整转换系数(比如月单位除以12,年单位直接用sum(follow_time))。

2. 修改原代码添加统计量

在你现有的代码基础上,加入add_stat()来整合自定义统计量:

library(gtsummary)
library(survival)
library(dplyr)
library(forcats)

df3 |>
  select(age, age6, sex, bmi, bmi_cat2,
         scheme_cat, hoscenter_cat1, nation,
         symini_cat3, month_admit, province, death28_cat1,
         favi, dexa, ando, D0Temp, d0temp_38, D0SPO2Pre, d0SPO2Pre_96, 
         exer_postO_3, dd_swabadmit, dd_swabadmit_cat1, timesurvival28_2_year) |>
  mutate(bmi_cat2 = fct_relevel(bmi_cat2, c('18.5 - 22.9', '<18.5', '23.0 - 24.9', '25.0 - 29.9', '30.0 - 34.9', '>=35.0'))) |>
  tbl_uvregression(
    method = coxph,
    y = Surv(timesurvival28_2_year, event = death28_cat1 == "Yes"),
    exponentiate = TRUE,
    estimate_fun = purrr::partial(style_ratio, digits = 1),
    pvalue_fun = purrr::partial(style_sigfig, digits = 3)
  ) |>
  add_n(location = "level") |>
  add_nevent(location = "level") |>
  # 添加人年数和发病率统计量
  add_stat(
    fns = list(
      person_years = ~get_person_years(.data, .variable),
      incidence_rate = ~get_person_years(.data, .variable)
    ),
    location = "level",
    stat_label = list(
      person_years = "Person-years",
      incidence_rate = "Incidence rate per 1000 person-years"
    )
  ) |>
  as_gt()

说明

  • add_stat()的location = "level"参数会把统计量添加到每个变量的水平行中,和样本量n、事件数nevent保持同一位置。
  • 自定义函数中通过.data[[variable]][[".time"]]和.data[[variable]][[".event"]]提取tbl_uvregression内部处理后的随访时间和事件数据,确保计算准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:33:10