strtime无法正确地将字符转换为时间。我需要先使用regexp吗?

strtime无法正确地将字符转换为时间。我需要先使用regexp吗?,regex,r,strptime,Regex,R,Strptime,我正在尝试将一系列字符数据转换为日期时间。strtime()正在将所有内容转换为NAs 下面是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

我正在尝试将一系列字符数据转换为日期时间。strtime()正在将所有内容转换为
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
,因为字符数据中缺少该信息,我会得到一个关于
将“list”RHS强制为“character”的错误

如果您能提供任何关于如何处理此问题的建议,我们将不胜感激。

您需要的是%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"
>dt dt\t dt\t
[1] “2012-04-03 16:00:00CDT”“2012-04-03 17:00:00CDT”“2012-04-03 18:00:00CDT”“2012-04-03 19:00:00CDT”
[5] “2012-04-03 20:00:00CDT”“2012-04-03 21:00:00CDT”

如果
%S
不在您的输入数据中,为什么您要告诉它它在您的输入数据中,并期望它工作?顺便说一句,我认为强制列表与字符错误无关;我不明白它是在向量上执行的。除了@Joe的答案,如果您使用
数据.table
:=
操作符来修改/创建列,您不必使用
dt$
访问输入列,您只需执行
dt[,time2:=as.POSIXct(time2),%m/%d/%Y%H:%m”)
谢谢大家。真不敢相信我漏掉了大写字母Y。我还将删除dt$索引