Wie analysiere ich Millisekunden?

85

Wie verwende ich strptimeoder andere Funktionen, um Zeitstempel mit Millisekunden in R zu analysieren?

time[1]
# [1] "2010-01-15 13:55:23.975"
strptime(time[1], format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time[1], format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`
Signalgeber
quelle

Antworten:

120

Mit freundlicher Genehmigung der ?strptimeHilfedatei (das Beispiel wurde in Ihren Wert geändert):

 z <- strptime("2010-01-15 13:55:23.975", "%Y-%m-%d %H:%M:%OS")
 z # prints without fractional seconds
 op <- options(digits.secs=3)
 z
 options(op) #reset options
Aniko
quelle
Danke, das habe ich im strptime doc verpasst. Ich suchte nach einem Formatcharakter und gab auf, als ich keinen sah.
Signalsucher
8
Wenn ich Ihnen ein Denkmal setzen könnte, würde ich!
jkff
2
so würde ich! Das "% OS" -Bit ist fantastisch.
Pierre D
Ist das nur in Python3 oder so? In meinem Python2.7.8: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Traceback (letzter Aufruf zuletzt): Datei "<stdin>", Zeile 1, in <module> Datei "/opt/pythons/2.7.8/lib/python2.7/_strptime.py", Zeile 467, in _strptime_time return _strptime (Datenzeichenfolge, Format) [0] Datei "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py ", Zeile 317, in _strptime (bad_directive, format)) ValueError: 'O' ist eine schlechte Direktive im Format '% Y-% m-% d% H:% M:% OS '
Firebush
1
@firebush: Es ist in R. Auf einigen Plattformen ist möglicherweise "% Y-% m-% d% H:% M:% OS3" erforderlich. Die Implementierung des "OS" -Formats wird auf den Hilfeseiten als OS-spezifisch gekennzeichnet.
IRTFM
31

Sie können auch verwenden, strptime(time[1], "%OSn")wo 0 <= n <= 6, ohne einstellen zu müssen digits.secs.

In der Dokumentation heißt es: "Welche davon unterstützt werden, hängt vom Betriebssystem ab." also YMMV.


quelle
2
Dies funktionierte auch bei Ubuntu nicht. Das ergibt NA.
Prakash