Rollende Summe durch eine andere Variable in R

8

Ich möchte die rollende 7-Tage-Summe nach ID bekommen. Angenommen, meine Daten sehen folgendermaßen aus:

%Vor%

Wie kann ich eine neue Spalte hinzufügen, die die rollende 7-Tage-Summe nach ID enthält?

    
jgreenb1 24.06.2014, 22:19
quelle

5 Antworten

8

Wenn Ihre Daten groß sind, sollten Sie diese Lösung mit data.table ausprobieren. Es ist ziemlich schnell. Wenn Sie mehr Geschwindigkeit benötigen, können Sie mapply immer zu mcmapply ändern und mehrere Kerne verwenden.

%Vor%     
Mike.Gahan 25.06.2014 05:08
quelle
6

Das von OP bereitgestellte Dataset macht die Komplexität der Aufgabe nicht verfügbar. In Bezug auf die Adressierung der OP-Frage war bisher nur Mikes Antwort die richtige.
In der Tat für eine 8 rollende Tage, anstatt 7 rollende Tage, wegen d <= 0 & d >= -7 .
zoo solution by @G. Grothendieck ist fast gültig, nur wenn merge für jede Gruppe von ID vergeben wird.
Unterhalb der zweiten data.table-Lösung gilt diese Zeit als gültig, wenn dev RcppRoll verwendet wird, die na.rm=TRUE erlaubt.
Und etwas formatierte Mikes Lösungsausgabe.

%Vor%

Ich freue mich auf ein Update von @Khashaa.

Edit (20150122.2): Unter Benchmarks wird keine OP-Frage beantwortet.

Timing auf einem größeren (immer noch sehr kleinen) Datensatz, 5439 Zeilen:

%Vor%

Ich bin mir aber nicht sicher, ob mein data.table-Code bereits optimal ist.

Die obigen Funktionen haben die OP-Frage nicht beantwortet. Lesen Sie den Anfang des Posts zum Aktualisieren. Mikes Lösung war die richtige.

    
jangorecki 16.01.2015 12:03
quelle
4

1) Angenommen, Sie meinen jede aufeinanderfolgende Überlappung von 7 Zeilen für diese ID:

%Vor%

2) Wenn Sie wirklich 7 Tage und nicht 7 Zeilen meinen, dann versuchen Sie Folgendes:

%Vor%

Aktualisiert Hinzugefügt (2) und einige Verbesserungen vorgenommen.

    
G. Grothendieck 24.06.2014 23:40
quelle
2
%Vor%     
Jared Gossett 23.09.2015 14:52
quelle
1

Ich habe festgestellt, dass es ein Problem mit Mike.Gahans vorgeschlagenem Code gibt, und korrigiere es wie folgt, nachdem ich es getestet habe.

%Vor%     
Yan Jiang 08.10.2015 15:57
quelle

Tags und Links