我最近开始使用{gtsummary}包来对回归输出进行制表,发现它真的很有帮助!
我遇到的一个问题与生存分析数据的呈现有关。
我想列出每个分类变量每个级别的事件数和随访时间。
df <- data.frame(
time = sample(1:1000, 100, replace = TRUE),
event = sample(0:1, 100, replace = TRUE),
gender = sample(c("M", "F"), size = 100, replace = TRUE),
stringsAsFactors = FALSE
)
tbl_uvregression(
df,
method = survival::coxph,
y = survival::Surv(time = time,
event = event)
)
默认情况下,输出包括一列N
,该列引用模型中每个变量包含的主题数。我希望这样,并为分类变量gender
的每个级别分配并提供后续时间。
可以使用{gtsummary}软件包完成此操作,还是需要单独计算并以某种方式将其合并到表中?
非常感谢!
答案 0 :(得分:1)
这是gtsummary
在github上的一个未解决问题。一种使用gtsummary
的解决方案可以提供一定数量的事件:
tbl_survfit(survfit(Surv(time, event) ~gender, df), times = c(50,100)) %>%
add_nevent() %>%
add_n()
答案 1 :(得分:1)
计划将add_n()
和add_nevent()
更新为包含一个参数,以选择性地将Ns直接添加到分类变量的级别。
同时,您可以使用这些计数构建tbl_summary()
表,并将它们与Cox模型结果合并。下面的示例,gtsummary网站(http://www.danieldsjoberg.com/gtsummary/articles/gallery.html#regression-tables-1)上的表库中也有类似的示例。
library(gtsummary)
library(dplyr)
df <- data.frame(
time = sample(1:1000, 100, replace = TRUE),
event = sample(0:1, 100, replace = TRUE),
gender = sample(c("M", "F"), size = 100, replace = TRUE),
stringsAsFactors = FALSE
)
# calculate the total N by gender
tbl_n <- df %>% select(gender) %>%
tbl_summary(statistic = everything() ~ "{n}") %>%
modify_header(stat_0 ~ "**N**") %>%
modify_footnote(everything() ~ NA)
# calculate the event N by gender
tbl_nevent <- df %>% filter(event == 1) %>% select(gender) %>%
tbl_summary(statistic = everything() ~ "{n}") %>%
modify_header(stat_0 ~ "**Event N**") %>%
modify_footnote(everything() ~ NA)
# build cox models
tbl_cox <-
tbl_uvregression(
df,
method = survival::coxph,
y = survival::Surv(time = time, event = event),
exponentiate = TRUE,
hide_n = TRUE
)
# merge tbls together
tbl_merge(list(tbl_n, tbl_nevent, tbl_cox)) %>%
modify_spanning_header(everything() ~ NA)
我还没有考虑过为这些表格增加随访时间的方法。但是我会考虑最好的实现。就像通过@Mike提到的tbl_survfit()
函数家族一样。