9

我在使用函数 strptime() 时遇到了一些意想不到的事情。我拥有的日期格式包括 "1/22/2013 11:00:00 PM" 。我为此使用的格式是“%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"

我得到了适当的结果。

此功能是否缺少 strptime 来检测 pm 及其变体,例如 pm 等代替 PM 或 pm。这是 R 中的错​​误吗?

RI 版本在 windows 7 32 位上使用 R.14.2

4

2 回答 2

11

这不是错误,但strptime需要以标准化方式获取信息。%p是:

区域设置中的 AM/PM 指示符。与 '%I' 一起使用,而不是与 '%H' 一起使用。在某些语言环境中为空字符串。

在您的语言环境中,这被定义为AM/amand PM/pm。R 是一种形式语言,您需要遵守它强加的规则。如果您使用 、 、 定义一个因子flavorcolortaste不能期望能够使用colourflavour作为引用该因子的方法。尽管对您来说这些代表相同的概念似乎很明显,但 R 是一种没有人类灵活性的形式语言。

于 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 回答