преобразовать даты события в столбцы времени события для анализа выживания - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь преобразовать список наблюдений для данных, подвергнутых цензуре, в надлежащий формат для анализа выживаемости в R. Чтобы дать пример, код должен преобразовываться следующим образом.

 event.6mo event.12mo event.24mo
1         0          0          0
2         0          1         NA
3         0          0          1

, где каждая строка описывает пациент, 0 = нет события в этот момент времени, 1 = событие и столбцы относятся к наблюдениям за 6, 12, 24 месяца.

и преобразуются в:

  event censored
1    24    0
2    12    1
3    24    1

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вы можете попробовать colSums с stack, т.е.

stack(colSums(d3, na.rm = TRUE))
#  values        ind
#1      0  event.6mo
#2      1 event.12mo
#3      1 event.24mo

ДАННЫЕ

dput(d3)
structure(list(vent.6mo = c(0L, 0L, 0L), event.12mo = c(0L, 1L, 
0L), event.24mo = c(0L, NA, 1L)), class = "data.frame", row.names = c("1", 
"2", "3"))
0 голосов
/ 12 февраля 2020

Опция с tidyverse, где мы поворачиваемся к «длинному» формату, затем группируемся по «имени», получаем столбец sum «значения»

library(dplyr)
library(tidyr)
pivot_longer(d3, everything()) %>%
   group_by(name) %>% 
   summarise(value = sum(value, na.rm = TRUE))
# A tibble: 3 x 2
#  name       value
#  <chr>      <int>
#1 event.12mo     1
#2 event.24mo     1
#3 vent.6mo       0

Или это это также можно сделать, сначала получив sum всех столбцов с summarise_all, а затем изменив формат на «длинный»

d3 %>%
   summarise_all(sum, na.rm = TRUE) %>% 
   pivot_longer(everything())

data

d3 <- structure(list(vent.6mo = c(0L, 0L, 0L), event.12mo = c(0L, 1L, 
0L), event.24mo = c(0L, NA, 1L)), class = "data.frame", row.names = c("1", 
"2", "3"))
...