#r #ggplot2 #survminer
#r #ggplot2 #survminer
Вопрос:
Я нашел несколько страниц о том, как извлечь один survfit
из них в таблицу. Однако я хочу извлечь несколько сводок в один kable
(или другой формат таблицы, если необходимо). Я объединил несколько соответствий в список для a ggsurvplot_combine
и хочу суммировать их непосредственно внизу в одной таблице в R Markdown.
Я создал reprex с lung
набором данных, который имитирует то, что я сделал для своего анализа.
Код:
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, status) ~ sex, 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, status) ~ ph.ecog, 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, status) ~ kps_ord, 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
объекту и извлечь то, что мне нужно по отдельности. Я надеялся, что может быть более простой способ.
Комментарии:
1. Как насчет вызова
tidy()
каждого объекта survfit, а затемbind_rows()
объединить полученные результаты?2. Попробуйте
lapply(kmlistexample,summary)
.
Ответ №1:
Выяснилось, что surv_median
функция (часть survminer
пакета) будет суммировать медиану и 95% ДИ и может быть сохранена в новом объекте. Код, который я использовал для своей 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|