9

関数strptime()の操作中に、予期しない問題が発生しました。私が持っている日付の形式は、「2013年1月22日午後11時00分00秒」で構成されています。これに使用している形式は「%m /%d /%Y%I:%M:%S%p」です。

コードは次のとおりです。

strptime("1/22/2013 11:00:00 p.m",format="%m/%d/%Y %I:%M:%S %p")
[1] NA

しかし、私が使用する場合

strptime("1/22/2013 11:00:00 pm",format="%m/%d/%Y %I:%M:%S %p")
[1] "2013-01-22 23:00:00"

適切な結果が得られます。

したがって、この機能には、pmまたはpmの代わりにpmなどのバリエーションを検出するためのstrptimeがありません。これはRのバグですか?

RIのバージョンは、Windows732ビットでR.14.2を使用しています。

4

2 に答える 2

11

これはバグではありませんがstrptime、標準化された方法で情報を期待しています。%pは:

ロケールのAM/PMインジケーター。'%H'ではなく'%I'と組み合わせて使用​​されます。一部のロケールでは空の文字列。

ロケールでは、これはおよびとして定義されAM/amますPM/pm。Rは形式言語であり、Rが課す規則に従う必要があります。flavorレベル、、、colorで因子を定義する場合、この因子を参照する方法として使用できるとtasteは期待できません。これらが同じ概念を表していることは明らかですが、Rは人間の柔軟性のない形式言語です。colourflavour

于 2013-01-22T10:12:29.407 に答える
4
library(lubridate)
mdy_hms("01/22/2013 11:00:00 PM")

結果:

[1] "2013-01-22 11:00:00 UTC"
于 2014-02-21T12:55:55.993 に答える