strptime没有正确地将字符转换为时间。我需要先使用正则表达式吗?

时间:2014-07-03 15:52:03

标签: regex r strptime

我正在尝试将一系列字符数据转换为日期时间。 strptime()正在将每一个转变为NA s。

以下是data.table中的一些数据:

head(dt$time2)
[1] "4/3/2012 16:00" "4/3/2012 17:00" "4/3/2012 18:00" "4/3/2012 19:00" "4/3/2012 20:00"
[6] "4/3/2012 21:00"

我尝试转换时:

dt[,time2:=as.POSIXct(strptime(dt$time2, "%m/%d/%y %H:%M:%S"))]

我为所有dt$time2结束了NA。如果我不使用%S,由于字符数据中缺少该信息,我收到有关Coerced 'list' RHS to 'character'的错误。

任何有关如何处理这一问题的建议都将非常受欢迎。

1 个答案:

答案 0 :(得分:2)

你需要%Y而不是%y。

> dt <- c("4/3/2012 16:00", "4/3/2012 17:00", "4/3/2012 18:00","4/3/2012 19:00", "4/3/2012 20:00","4/3/2012 21:00")
> dt_t <- as.POSIXct(strptime(dt,"%m/%d/%Y %H:%M"))
> dt_t
[1] "2012-04-03 16:00:00 CDT" "2012-04-03 17:00:00 CDT" "2012-04-03 18:00:00 CDT" "2012-04-03 19:00:00 CDT"
[5] "2012-04-03 20:00:00 CDT" "2012-04-03 21:00:00 CDT"