问题描述
我找到了一些关于如何将单个 survfit
提取到表中的页面。但是,我想将多个摘要提取到单个 kable
(或其他表格格式,如有必要)。我将多个拟合组合到一个 ggsurvplot_combine
列表中,并希望在 R Markdown 中的单个表格中直接汇总它们。
我使用 lung
数据集创建了一个 reprex,它模仿了我为分析所做的工作。
代码:
kmcombo_sex <- survfit(Surv(time,status) ~ sex,data = lung)
kmcombo_ph.ecog <- survfit(Surv(time,status) ~ ph.ecog,data = lung)
lung2 <- lung %>%
mutate(kps_ord = case_when(
ph.karno > 70 ~ 3,ph.karno > 50 ~ 2,TRUE ~ 1
))
kmcombo_kps <- survfit(Surv(time,status) ~ kps_ord,data = lung2)
kmlistexample <- list(kmcombo_sex,kmcombo_ph.ecog,kmcombo_kps)
kmlistexample
输出:
kmlistexample
[[1]]
Call: survfit(formula = Surv(time,data = lung)
n events median 0.95LCL 0.95UCL
sex=1 138 112 270 212 310
sex=2 90 53 426 348 550
[[2]]
Call: survfit(formula = Surv(time,data = lung)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
ph.ecog=0 63 37 394 348 574
ph.ecog=1 113 82 306 268 429
ph.ecog=2 50 44 199 156 288
ph.ecog=3 1 1 118 NA NA
[[3]]
Call: survfit(formula = Surv(time,data = lung2)
n events median 0.95LCL 0.95UCL
kps_ord=1 7 6 122 105 NA
kps_ord=2 51 45 212 163 310
kps_ord=3 170 114 353 305 428
当我尝试传统方式时,我得到一个 survfit
对象的嵌套列表:
kmlistexample_sum <- summary(kmlistexample)
kmlistexample_sum
Length Class Mode
[1,] 17 survfit list
[2,] 18 survfit list
[3,] 17 survfit list
在使用 summary
函数之前,我也尝试取消列出,但无济于事:
kmlistexample_sum <- summary(unlist(kmlistexample))
如果所有其他方法都失败了,我可以返回到每个 survfit
对象并单独提取我需要的内容。我希望可能有更简单的方法。
解决方法
发现 surv_median
函数(survminer
包的一部分)将汇总中值和 95%CI 并可以存储在新对象中。我用于 R Markdown 的代码如下:
require(knitr)
surv_median(kmlistexample) %>%
kable()
结果(根本没有调整美感):
|strata | median| lower| upper|
|:------|------:|-----:|-----:|
|sex=1 | 270| 212| 310|
|sex=2 | 426| 348| 550|
|strata | median| lower| upper|
|:---------|------:|-----:|-----:|
|ph.ecog=0 | 394| 348| 574|
|ph.ecog=1 | 306| 268| 429|
|ph.ecog=2 | 199| 156| 288|
|ph.ecog=3 | 118| NA| NA|
|strata | median| lower| upper|
|:---------|------:|-----:|-----:|
|kps_ord=1 | 122| 105| NA|
|kps_ord=2 | 212| 163| 310|
|kps_ord=3 | 353| 305| 428|