ミリ秒を解析する方法は?


85

strptimeまたは他の関数を使用して、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"`

回答:


121

?strptimeヘルプファイルの礼儀(例をあなたの値に変更):

 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

おかげで、私はstrptimeドキュメントでそれを逃しました。フォーマット文字を探していたのですが、見当たらないので諦めました。
signalseeker

8
私があなたに敬意を表して記念碑を置くことができれば、私はそうします!
jkff 2010

2
そうだろう!「%OS」ビットは素晴らしいです。
ピエールD

これはpython3か何かだけですか?私のpython2.7.8の場合:>>> time.strptime(t、 "%Y-%m-%d%H:%M:%OS")トレースバック(最後の最後の呼び出し):ファイル "<stdin>"、行1、<module>ファイル "/opt/pythons/2.7.8/lib/python2.7/_strptime.py"、行467、_strptime_timeでreturn _strptime(data_string、format)[0]ファイル "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py "、行317、_strptime(bad_directive、format))ValueError: 'O'はフォーマット '%Y-%m-%d%H:%の不正なディレクティブですM:%のOS」
firebush

1
@firebush:Rにあります。一部のプラットフォームでは「%Y-%m-%d%H:%M:%OS3」が必要になる場合があります。「OS」形式の実装は、ヘルプページでOS固有としてラベル付けされています。
IRTFM 2016

31

strptime(time[1], "%OSn")を設定せずに、0 <= n <= 6の場所を使用することもできdigits.secsます。

ドキュメントには、「これらのうち、サポートされているのはOSに依存する」と記載されています。だからYMMV。


2
これはUbuntuでもうまくいきませんでした。これでNAが得られます。
プラカシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.