Ersetze NA mit dem vorherigen oder nächsten Wert, nach Gruppe, mit dplyr

8

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

%Vor%

Ich möchte NA-Werte mit vorherigen Werten implizieren (ersetzen) und nach Benutzer-ID gruppiert Falls die erste Zeile einer Benutzer-ID NA hat, dann ersetze sie durch die nächste Gruppe von Werten für diese Benutzer-ID-Gruppe.

Ich versuche dplyr- und zoo-Pakete so zu benutzen ... aber es funktioniert nicht

%Vor%

Ich brauche Ergebnis df so:

%Vor%     
Tarak 14.10.2016, 10:22
quelle

3 Antworten

18
%Vor%

Was gibt Ihnen:

%Vor%     
Rentrop 14.10.2016, 10:39
quelle
1

Die Verwendung von zoo::na.locf direkt auf dem gesamten data.frame würde die NA unabhängig von den Gruppen userID füllen. Die Gruppierung des Pakets dplyr hat leider keinen Effekt auf na.locf function, deshalb ging ich mit einem Split:

%Vor%

Was es tut, ist, dass es zuerst die Daten in 3 data.frames aufteilt, dann wende ich einen ersten Imputationsprozess an (nach unten), dann nach oben mit der anonymen Funktion in lapply und benutze schließlich rbind die data.frames wieder zusammen. Sie haben die erwartete Ausgabe.

    
agenis 14.10.2016 10:37
quelle
1

Wenn Sie die @ agenis-Methode mit na.locf() kombiniert mit purrr verwenden, können Sie Folgendes tun:

%Vor%     
Steven Beaupré 14.10.2016 15:29
quelle

Tags und Links