La mia domanda è che ho un dataframe m
come di seguitoriempimento NA in base all'ultimo valore non-NA per ogni gruppo in R
y1 =c(rep("A",5),rep("B",5))
y2 = rep(c(1:5),2)
y3 = y2
y3[c(2,7,9)]=NA
m = data.frame(y1,y2,y3)
y1 y2 y3
1 A 1 1
2 A 2 <NA>
3 A 3 3
4 A 4 4
5 A 5 5
6 B 1 1
7 B 2 <NA>
8 B 3 3
9 B 4 <NA>
10 B 5 5
Voglio riempire il NA in base alla più vicina non-NA valore "di fronte a" questo NA. La mia uscita dovrebbe essere simile a questo:
y1 y2 y3 y4
1 A 1 1 1
2 A 2 <NA> 1
3 A 3 3 3
4 A 4 4 4
5 A 5 5 5
6 B 1 1 1
7 B 2 <NA> 1
8 B 3 3 3
9 B 4 <NA> 3
10 B 5 5 5
Qualche idea su come utilizzare dplyr
per raggiungere questo obiettivo?
'locf' non gestirà i valori voce mancanti, il' nomb' non gestirà trailling valori mancanti ... se avete un gruppo tutti con valori mancanti, ciò che né ci sarà lavoro ... –
buon punto, ma non sappiamo ancora se questi si presentano nel contesto dell'OP o no. Dal momento che dicono "di fronte" sembra che non lo facciano, ma solo l'OP può dirlo con certezza. La soluzione seguente (e collegata) funziona per l'esempio dell'OP. Una soluzione un po 'goffa usa 'zoo :: na.locf' due volte, con e senza' fromLast'. –