在R中创建时间对象

时间:2012-01-13 15:44:01

标签: r time-series

我有以下数据

>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。任何人都可以建议我如何解决这个问题。谢谢!

1 个答案:

答案 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)。