我有以下数据
>d
2010-07-02
>t
835
我发出以下命令
>dt<-paste(d,t)
>dt
"2010-07-02 835"
然后我发出以下命令,它返回NA如下:
>dtt<-as.POSIXlt(strptime(dt,'%Y-%m-%d %H%M'))
>dtt
NA
所以我做了以下更改
>t=1001
现在我跑的时候 dt后跟dtt,工作正常,返回
DTT “2010-07-02 10:01:00”
所以,在我看来,当小时的第一个数字为0时出现问题,这就是为什么当HHMM小于1000时,它会产生NA。任何人都可以建议我如何解决这个问题。谢谢!
答案 0 :(得分:4)
使用sprintf
格式化时间字符串,然后再将其传递给as.POSIXlt
:
d <- "2010-07-02"
h <- 835
dtt <- sprintf("%s %04d", d, h)
as.POSIXlt(dtt, format="%Y-%m-%d %H%M")
[1] "2010-07-02 08:35:00"
字符串"%s %04d"
告诉sprintf
将d连接为字符串(%s),将h连接为长度为4的固定宽度字符串,前导零(%04d)。