is.na()将有效日期计为NA

时间:2018-01-23 03:04:58

标签: r

我从字符列创建了一个datetime列,如下所示:

dat$created_datetime <- strptime(dat$created_at, format = '%d/%m/%Y %H:%M')

我的清理代码在此列中报告了NA,但条目看起来很好:

> dat$created_datetime[514]
[1] "2016-10-02 02:26:00"
> is.na(dat$created_datetime[514])
[1] TRUE
> str(dat$created_datetime)
POSIXlt[1:300400], format: "2016-06-29 13:10:00" "2016-06-30 03:56:00" "2016-07-05 09:43:00" "2016-07-12 06:47:00" "2016-07-13 06:57:00" "2016-07-13 10:11:00" ...

300k行中只有62行受到影响。我无法弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

您错误地指定了日期的参数。例如,你有第一天 - 你给的字符串以一年开头。请参阅https://www.stat.berkeley.edu/~s133/dates.html - 了解%d,%H等代表的例子。另请注意,您提供的字符串由“ - ”分隔,而不是“/”。检查我的代码 - 我获取了您的数据,并且能够正确加载它。第一个块是你正在做的 - 第二个是纠正的

a <- "2016-10-02 02:26:00"
a <- strptime(a, format = '%d/%m/%Y %H:%M')
is.na( a )

a <- "2016-10-02 02:26:00"
a <-  as.POSIXct(a, format = '%Y-%m-%d %H:%M:%S')
is.na( a )