Frage

Was ist der beste (schnellste) Weg, um eine Gleitfensterfunktion mit dem Data.Table-Paket zu implementieren?

Ich versuche, einen rollenden Median zu berechnen, aber mehrerer Reihen pro Datum aufzunehmen (aufgrund von 2 zusätzlichen Faktoren), die ich denke, dass die Zoo-Rollapply-Funktion nicht funktionieren würde.Hier ist ein Beispiel mit einer naiven für Schleife: generasacodicetagpre.

War es hilfreich?

Lösung

data.table hat keine speziellen Funktionen für rollende Fenster, derzeit.Weitere Details hier in meiner Antwort auf eine andere ähnliche Frage hier:

Gibt es einen schnellen Weg, um eine rollende Regression innerhalb von Daten auszuführen?

Rolling Median ist interessant.Es würde eine spezialisierte Funktion benötigen, um effizient zu leisten (gleiche Verbindung wie in früheren Kommentar):

Rolling Median Algorithmus in c

Die generationspflichtigen Gattungen in der Frage und Antworten sind hier alle sehr ineffizient, relativ zu einer ordnungsgemäßen spezialisierten generationspflichtigen generationstagcode-Funktion (der für R Afaik nicht verfügbar ist).

Andere Tipps

Ich habe es gelungen, das Beispiel auf 1.4s zu erhalten, indem er ein verblüfftes Dataset erstellt und einen riesigen Join tut. generasacodicetagpre.

Das funktioniert auf diesem Testdatensatz ziemlich gut, aber auf meinem echten, fehlschlägt es mit 8 GB RAM.Ich werde versuchen, bis zu einem der hohen Speicher-EC2-Instanz (mit 17, 34 oder 68 GB RAM) zu gelangen, um es zu funktionieren.Jede Idee, wie dies in einem weniger erinnerungsintensiven Weg zu tun ist, würden sich diskutieren

Diese Lösung funktioniert, aber es dauert eine Weile. generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top