Beschleunigung der Konvertierung von 2 Millionen Zeilen mit Datumszeichenfolgen nach POSIX.ct
Ich habe eine CSV-Datei, die ungefähr 2 Millionen Zeilen mit Datumszeichenfolgen im Format enthält:
2012/11/13 21:10:00
Nennen wir dascsv$Date.and.Time
Ich möchte diese Daten (und die zugehörigen Daten) so schnell wie möglich in xts konvertieren
Ich habe ein Skript geschrieben, das die Konvertierung einwandfrei durchführt (siehe unten), aber es ist furchtbar langsam und ich möchte dies so weit wie möglich beschleunigen.
Hier ist meine aktuelle Methodik. Hat jemand irgendwelche Vorschläge, wie man dies schneller macht?
dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")
idx <- format(dt,tz=z,usetz=TRUE)
Das Skript konvertiert diese Datumszeichenfolgen also inPOSIX.ct
. Anschließend wird eine Zeitzonenumwandlung mit durchgeführtformat
(z
ist eine Variable, die die TZ darstellt, in die ich konvertiere. Ich mache dann eine regelmäßigexts
Rufen Sie auf, um eine XTS-Serie mit den restlichen Daten in der CSV zu erstellen.
Das funktioniert zu 100%. Es ist nur sehr, sehr langsam. Ich habe versucht, dies parallel laufen zu lassen (es macht nichts; wenn überhaupt, macht es es schlimmer). Was meine ich mit "langsam"?
user system elapsed
155.246 16.430 171.650
Das ist auf einem 3GhZ, 16GB RAM 2012 MB Pro. Ich kann ungefähr die Hälfte davon auf einem ähnlichen Prozessor mit 32 GB RAM auf einer Win7-Maschine erhalten
Ich bin sicher, jemand hat eine bessere Idee - ich bin offen für Vorschläge überRcpp
etc. Allerdingsidealerweise funktioniert die lösung mit csv und nicht mit einer anderen methode wie dem einrichten einer datenbank. Abgesehen davon bin ich in der Lage, dies mit welcher Methode auch immer zu tun, um die schnellste Konvertierung zu erzielen.
Ich wäre über jede Hilfe sehr dankbar. Danke im Voraus.