Schnellster Weg, um eine 21-tägige rollende Summe für einen ActivityType zu erstellen

8

Ich habe einen großen Datenrahmen (3M + Zeilen). Ich versuche zu zählen, wie oft ein bestimmter ActivityType in einem 21-Tage-Fenster angezeigt wird. Ich habe meine Lösung aus rollende Summe durch eine andere Variable in R . Aber es dauert lange nur für einen ActivityType. Ich glaube nicht, dass 3M + Zeilen eine übermäßige Menge an Zeit benötigen. Unten ist, was ich versucht habe:

%Vor%

Und das ist nur für ActivityType = Email, dann muss ich das gleiche für andere ActivityType-Ebenen tun. Der Link, von dem ich die Lösung erhalten habe, sprach von "mcapply" anstatt von "mapply". Bitte lassen Sie mich wissen, wie ich McApply oder eine andere Lösung verwenden kann, die es schneller machen wird.

Unten ist die erwartete Ausgabe. Für jede Zeile nehme ich das ActivityDate und 21 Tage davor und dieser 21-Tage-Zeitraum ist mein Zeitfenster. Ich zähle die ganze Zeit ActivityType="Email" erscheint in diesem Zeitfenster.

%Vor%     
gibbz00 24.12.2015, 17:04
quelle

2 Antworten

4

Versuchen Sie einen Ansatz, bei dem die Datentabelle sowohl für die Liste der Namen und Daten als auch für die Quelle der Anzahl der E-Mails verwendet wird. Dies geschieht in data.table , indem DT im Argument i von DT zusammen mit by = .EACHI verwendet wird. Code könnte wie folgt aussehen:

%Vor%

Im Folgenden wird derselbe Ansatz wie oben beschrieben, jedoch mit einigen Änderungen, die die Geschwindigkeit abhängig von Ihren Daten um 30-40% verbessern können.

%Vor%     
WaltS 24.12.2015, 18:05
quelle
6
%Vor%     
eddi 24.12.2015 19:45
quelle

Tags und Links