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