¿Cómo seleccionar sólo el primer valor no NA de cada grupo en R?
Tengo un marco de datos como este:
mydata <- data.frame(Id=c(01,01,01,01,01,01,02,02,02,02),
VISIT=c("Screeing","Baseline","Baseline","Baseline","Week 9","Week 9","Baseline","Week 2",
"Week 2","Week 2"),
Score=c(1,2,4,5,78,9,5,NA,3,4))
Lo que intento hacer es agrupar por Id y VISIT y elegir el primer valor no NA de cada grupo:
mydata %>%
group_by(Id,VISIT) %>%
mutate(first = dplyr::first(na.omit(Score)))
Pero esto no elimina las otras filas, y solo crea una nueva columna con valores repetidos del primer valor no NA de cada grupo.
El resultado esperado sería:
Id VISIT Score
<double> <fct> <double>
1 1 Screeing 1
2 1 Baseline 2
5 1 Week 9 78
7 2 Baseline 5
9 2 Week 2 3
davy.ai
Para obtener la salida deseada, debes utilizar la función
summarise
en lugar demutate
. Aquí tienes un código de ejemplo que debería funcionar:La salida debería ser:
Aquí, agrupamos el marco de datos por las columnas
Id
yVISIT
, y luego utilizamos la funciónsummarise
para obtener el primer valor no-NA de cada grupo usando la funciónfirst
junto conna.omit
para eliminar los valoresNA
. Este marco de datos resultante debería tener la salida deseada.