Ersetzen Sie NA mit dem vorherigen oder nächsten Wert nach Gruppe mit dplyr

Ich habe einen Datenrahmen, der nach absteigender Reihenfolge des Datums sortiert ist.

ps1 = data.frame(userID = c(21,21,21,22,22,22,23,23,23), 
             color = c(NA,'blue','red','blue',NA,NA,'red',NA,'gold'), 
             age = c('3yrs','2yrs',NA,NA,'3yrs',NA,NA,'4yrs',NA), 
             gender = c('F',NA,'M',NA,NA,'F','F',NA,'F') 
)

Ich möchte NA-Werte durch vorherige Werte ersetzen und nach Benutzer-ID gruppieren. Falls die erste Zeile einer Benutzer-ID NA enthält, wird diese durch den nächsten Satz von Werten für diese Benutzer-ID-Gruppe ersetzt.

Ich versuche, Dplyr und Zoo-Pakete wie folgt zu verwenden ... aber es funktioniert nicht

cleanedFUG <- filteredUserGroup %>%
 group_by(UserID) %>%
 mutate(Age1 = na.locf(Age), 
     Color1 = na.locf(Color), 
     Gender1 = na.locf(Gender) ) 

Ich brauche Ergebnis df wie folgt:

                      userID color  age gender
                1     21  blue 3yrs      F
                2     21  blue 2yrs      F
                3     21   red 2yrs      M
                4     22  blue 3yrs      F
                5     22  blue 3yrs      F
                6     22  blue 3yrs      F
                7     23   red 4yrs      F
                8     23   red 4yrs      F
                9     23  gold 4yrs      F

Antworten auf die Frage(8)

Ihre Antwort auf die Frage