¿Cómo analizar milisegundos?

85

¿Cómo uso strptimeo cualquier otra función para analizar las marcas de tiempo con milisegundos en 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"`
buscador de señales
fuente

Respuestas:

122

Cortesía del ?strptimearchivo de ayuda (con el ejemplo cambiado a su valor):

 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
fuente
Gracias, me perdí eso en el documento strptime. Estaba buscando un personaje de formato y me di por vencido cuando no vi ninguno.
Signalseeker
8
Si pudiera poner un monumento en su honor, ¡lo haría!
jkff
2
¡Yo también! El bit "% OS" es asombroso.
Pierre D
¿Es esto solo en python3 o algo así? En mi python2.7.8: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Rastreo (última llamada más reciente): Archivo "<stdin>", línea 1, en <module> Archivo "/opt/pythons/2.7.8/lib/python2.7/_strptime.py", línea 467, en _strptime_time return _strptime (data_string, formato) [0] Archivo "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py ", línea 317, en _strptime (bad_directive, format)) ValueError: 'O' es una directiva incorrecta en el formato '% Y-% m-% d% H:% M:% OS '
firebush
1
@firebush: Está en R. Es posible que requiera "% Y-% m-% d% H:% M:% OS3" en algunas plataformas. La implementación del formato "SO" está etiquetada como específica del SO en las páginas de ayuda.
IRTFM
31

También puede usar strptime(time[1], "%OSn")donde 0 <= n <= 6, sin tener que configurar digits.secs.

La documentación dice "Cuál de estos son compatibles depende del sistema operativo". entonces YMMV.


fuente
2
Esto no funcionó para mí también en Ubuntu. Eso produce NA.
Prakash