Cómo llenar los valores NA en grupos y condicionarlos.
Estoy teniendo dificultades para averiguar cómo puedo repetir el valor para id2 cuando tiene valor = NA, y también tener el mismo date1.
Tengo el siguiente marco de datos:
test = data.frame(date1 = c("2020-11-02", "2020-11-02","2020-11-02", "2020-11-03","2020-11-04","2020-11-04"),
value = c(676, 676, NA, 400, 505, NA),
id1 = c("16-4-L", "16-3-L", "16-3-R", "16-3-F", "17-6-L", "17-1-L"),
id2 = c("16", "16", "16", "16", "17", "17"))
date1 value id1 id2
1 2020-11-02 676 16-4-L 16
2 2020-11-02 676 16-3-L 16
3 2020-11-02 NA 16-3-R 16
4 2020-11-03 400 16-3-F 16
5 2020-11-04 505 17-6-L 17
6 2020-11-04 NA 17-1-L 17
y necesito lo siguiente:
> resultado
date1 value id1 id2
1 2020-11-02 676 16-4-L 16
2 2020-11-02 676 16-3-L 16
3 2020-11-02 676 16-3-R 16
4 2020-11-03 400 16-3-F 16
5 2020-11-04 505 17-6-L 17
6 2020-11-04 505 17-1-L 17
Tenga en cuenta que id2 son diferentes, pero estoy buscando el mismo id1 en la misma fecha para usar el mismo valor.
Me gustaría hacer algo como: si el valor es NA, entonces buscamos las filas que tienen el mismo id2 y date1, luego simplemente copiamos ese valor.
¿Algún consejo sobre cómo puedo hacerlo?
davy.ai
Puedes usar el paquete
dplyr
para lograr esto. Primero, puedes agrupar el marco de datos porid2
ydate1
y luego utilizar la funcióncoalesce
para rellenar los valoresNA
con el primer valor no-NA
en el grupo.Esto te dará el siguiente resultado: