Извлечение нескольких выходных данных survfit () в таблицу

#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|