Agrupe por ID y Resultado y tome las fechas más tempranas de resultados específicos y asígneles números (por ejemplo, resultado1, resultado2).
Disculpen si no estoy explicando esto claramente. Tengo el siguiente conjunto de datos:
mydata = data.frame(Id = c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2),
Date = c("2001-01-31", "2001-02-13", "2001-05-31", "2001-06-02",
"2018-01-31", "2018-03-31", "2018-07-31", "2019-04-04",
"2014-01-31", "2014-02-02", "2014-04-31", "2014-05-18"),
Outcome = c("CR", "CR", "Relapse", "Relapse",
"CR", "CR", "CR", "Relapse",
"CR", "CR", "Relapse", "CR"))
Lo que se muestra a continuación. Como se puede ver, cada paciente se encuentra en ciertas fases en diferentes momentos y me gustaría capturar las fechas más tempranas de cuándo comienza cada nueva fase por paciente. Me gustaría entonces renombrar estas fases a CR1, Recaída1, CR2, Recaída2, y así sucesivamente.
Id Date Outcome
1 2001-01-31 CR
1 2001-02-13 CR
1 2001-05-31 Relapse
1 2001-06-02 Relapse
1 2018-01-31 CR
1 2018-03-31 CR
1 2018-07-31 CR
1 2019-04-04 Relapse
2 2014-01-31 CR
2 2014-02-02 CR
2 2014-04-31 Relapse
2 2014-05-18 CR
Este es el resultado que intento lograr:
Id CR1 Relapse1 CR2 Relapse2
1 2001-01-31 2001-05-31 2018-01-31 2019-04-04
2 2014-01-31 2014-04-31 2014-05-18 NA
No estoy seguro por dónde empezar con esta pregunta y agradecería cualquier ayuda. ¡Gracias!
davy.ai
Para obtener el resultado deseado, podemos seguir estos pasos:
Aquí está el código de R para lograrlo:
“` {r}
biblioteca(dplyr)
biblioteca(tidyr)
Convertir la columna de Fecha a formato de fecha
mydata$Fecha <- as.Date(mydata$Fecha)
Agrupar los datos por Id y Outcome, y resumir para obtener la fecha más temprana para cada grupo
new_data <- mydata %>%
group_by(Id, Outcome) %>%
summarize(min_date = min(Fecha)) %>%
ungroup() %>%
Agrega una columna con el número de fase (CR1, Recaída1, CR2, etc.)
mutate(phase = paste0(Outcome, row_number())) %>%
Pivot the data to get the desired format
pivot_wider(names_from = phase, values_from = min_date)
Renombrar los nombres de columna para que coincidan con el resultado deseado
colnames(new_data)[-1] <- c(“CR1”, “Recaída1”, “CR2”, “Recaída2”)
Ver el resultado final
new_data
“`
Esto debe proporcionar el resultado deseado como se describe en la pregunta.