Como analisar milissegundos?


85

Como faço para usar strptimeou quaisquer outras funções para analisar carimbos de hora com milissegundos em 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"`

Respostas:


121

Cortesia do ?strptimearquivo de ajuda (com o exemplo alterado para o seu 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

Obrigado, perdi isso no doc do strptime. Eu estava procurando um personagem de formato e desisti quando não vi um.
signalseeker

8
Se eu pudesse colocar um memorial em sua homenagem, eu o faria!
jkff 01 de

2
eu também! O bit "% OS" é incrível.
Pierre D

Isso é apenas em python3 ou algo assim? Em meu python2.7.8: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Traceback (última chamada mais recente): Arquivo "<stdin>", linha 1, em <module> File "/opt/pythons/2.7.8/lib/python2.7/_strptime.py", linha 467, em _strptime_time return _strptime (data_string, format) [0] File "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py ", linha 317, em _strptime (bad_directive, format)) ValueError: 'O' é uma diretiva incorreta no formato '% Y-% m-% d% H:% M:% OS '
firebush

1
@firebush: está em R. Pode exigir "% Y-% m-% d% H:% M:% OS3" em algumas plataformas. A implementação do formato "OS" é rotulada como específica do sistema operacional nas páginas de ajuda.
IRTFM

31

Você também pode usar strptime(time[1], "%OSn")onde 0 <= n <= 6, sem ter que definir digits.secs.

A documentação afirma "Quais destes são suportados depende do sistema operacional." então YMMV.


2
Isso não funcionou para mim também no Ubuntu. Isso produz NA.
Prakash
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.