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"`
buscador de sinais
fonte

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
Aniko
fonte
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.


fonte
2
Isso não funcionou para mim também no Ubuntu. Isso produz NA.
Prakash