R:strptime()和is.na()出乎意料的结果

Jot*_*ota 3 datetime r strptime

我有一个大约有800万行和3列的数据框.我用strptime()以下方式:

df$date.time <- strptime(df$date.time, "%m/%d/%y %I:%M:%S %p")
Run Code Online (Sandbox Code Playgroud)

这适用于所有行,但我检查使用的1104行

df[is.na(df$date.time), ]
Run Code Online (Sandbox Code Playgroud)

当我查看这些"问题"数据时,date.time条目似乎按照我期望的方式进行格式化.例如,这是一个出现问题的观察结果,但似乎不是NA:

id                date.time              outcome
observation543490 2012-03-11 02:14:01    C
Run Code Online (Sandbox Code Playgroud)

在这里可能会发生什么,is.na(df$date.time)为显然已正确转换的行返回TRUE值?

这是一个可重复的例子(如果你在CST):

is.na(strptime("03/11/12 2:14:01 AM", "%m/%d/%y %I:%M:%S %p", "CST6CDT"))
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 6

NA由于夏令时,问题可能是所有返回的时间都不存在于您正在使用的任何时区.

检查数据源以确定记录数据的时区,然后tz在您的调用中将参数设置为该值strptime.