Frage Zeichen in Datum umwandeln * schnell * in R [duplizieren]


Mögliche Duplikate:
Warum ist as.Date bei einem Zeichenvektor langsam? 

Ich habe eine große data.frame (etwa 60 Mil Beobachtungen), die ich aus einer Datenbank mit gelesen habe RMySQL. Die Daten werden als Zeichen eingefügt (es scheint keine Möglichkeit zu geben dies zu ändern) und so benutze ich as.Date um Dinge auf den neuesten Stand zu bringen. Dies erfordert jedoch eine extrem lange Zeit mit so vielen Beobachtungen. Kann man etwas schneller machen?


9
2017-10-15 14:56


Ursprung


Antworten:


Simon Urbaneks schnelle Zeit Bibliothek ist sehr schnell für eine Teilmenge der analysierbaren Datumszeiten:

R> now <- Sys.time()
R> now
[1] "2012-10-15 10:07:28.981 CDT"
R> fasttime::fastPOSIXct(format(now))
[1] "2012-10-15 05:07:28.980 CDT"
R> as.Date(fasttime::fastPOSIXct(format(now)))
[1] "2012-10-15"
R> 

Es analysiert jedoch nur ISO-Formate und nimmt UTC als Zeitzone an.

Nach 3 1/2 Jahren bearbeiten:  Einige Kommentatoren scheinen zu denken, dass das Fast-Time-Paket schwer zu installieren ist. Ich bin anderer Ansicht. Hier ist (noch einmal) zu gebrauchen install.r Das ist nur ein einfacher Wrapper mit kleiner (und auch als Beispiel mit ausgeliefert):

edd@max:~$ install.r fasttime
trying URL 'https://cran.rstudio.com/src/contrib/fasttime_1.0-1.tar.gz'
Content type 'application/x-gzip' length 2646 bytes
==================================================
downloaded 2646 bytes

* installing *source* package ‘fasttime’ ...
** package ‘fasttime’ successfully unpacked and MD5 sums checked
** libs
ccache gcc -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -O3 -Wall -pipe -pedantic -std=gnu99  -c tparse.c -o tparse.o
ccache gcc -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o fasttime.so tparse.o -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/fasttime/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (fasttime)

The downloaded source packages are in
        ‘/tmp/downloaded_packages’
edd@max:~$ 

Wie Sie sehen können, hat das Paket keine externen Abhängigkeiten, eine Quelldatei und Builds ohne die geringste Störung. Das können wir auch sehen schnelle Zeit ist jetzt auf CRAN, was nicht der Fall war, als die Antwort geschrieben wurde. Damit existieren jetzt Windows- und OS X-Binärdateien auf dieser Seite und die Installation wird so einfach wie für mich sein auch wenn Sie nicht von der Quelle installieren.


20
2017-10-15 15:08