Come analizzare i millisecondi?


86

Come posso utilizzare strptimeo altre funzioni per analizzare i timestamp con millisecondi in R?

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"`

Risposte:


123

Per gentile concessione del ?strptimefile della guida (con l'esempio modificato nel tuo valore):

 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

Grazie, me lo sono perso nel documento strptime. Stavo cercando un personaggio formato e ho rinunciato quando non ne ho visto uno.
cercatore di segnali

8
Se potessi mettere un memoriale in tuo onore, lo farei!
jkff

2
Anch'io! Il bit "% OS" è fantastico.
Pierre D

È solo in python3 o qualcosa del genere? Nel mio python2.7.8: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Traceback (la chiamata più recente per ultima): File "<stdin>", riga 1, in <module> File "/opt/pythons/2.7.8/lib/python2.7/_strptime.py", riga 467, in _strptime_time return _strptime (data_string, format) [0] File "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py ", riga 317, in _strptime (bad_directive, format)) ValueError: 'O' è una cattiva direttiva nel formato '% Y-% m-% d% H:% M:% OS '
firebush

1
@firebush: è in R. Potrebbe richiedere "% Y-% m-% d% H:% M:% OS3" su alcune piattaforme. L'implementazione del formato "OS" è etichettata come specifica del sistema operativo nelle pagine della guida.
IRTFM

31

Puoi anche usare strptime(time[1], "%OSn")dove 0 <= n <= 6, senza dover impostare digits.secs.

La documentazione afferma "Quali di questi sono supportati dipende dal sistema operativo". quindi YMMV.


2
Questo non ha funzionato anche per me su Ubuntu. Questo produce NA.
Prakash
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.