从天开始生成帧

时间:2013-06-08 12:51:38

标签: r date type-conversion

在我的数据集中,日期具有以下格式:

day
2000-01-01 00:00:00
2000-01-01 01:00:00
2000-01-01 02:00:00
2000-01-01 03:00:00

我们称之为数据帧日。

我想生成一个数据帧好几天,我正在使用它:

n=12
day <- as.Date( tail( day$day , 1 ) , format = "Y-%m-%d %H:%M:%S" )+1:n

然而问题是这给了我2000-01-01而不是2000-01-01 03:00:00。它不包括当天的工作时间。

2 个答案:

答案 0 :(得分:1)

删除as.Date()调用,更改添加行,它将起作用:

> format(day + as.difftime(1, units='day'), format='%c')
2000-01-02 00:00:00
2000-01-02 01:00:00
2000-01-02 02:00:00
2000-01-02 03:00:00

答案 1 :(得分:1)

其中任何一个都可行。在致电%Y之前,您还错过了as.Date。请注意,这些数据类型的整数单位是秒,因此要将日期/时间添加一小时,您需要将3600秒的倍数添加到日期:

n=12
strptime( "2000-01-01 03:00:00" , format = "%Y-%m-%d %H:%M:%S" )+(1:n)*3600
as.POSIXct( "2000-01-01 03:00:00" , format = "%Y-%m-%d %H:%M:%S" )+(1:n)*3600

我推荐使用as.POSIXct方法。 strptime将字符向量转换为类POSIXlt。我不确定为什么,但我认为很多人更喜欢POSIXct而不是POSIXlt

as.POSIXct( tail( days$day , 1 ) , format = "%Y-%m-%d %H:%M:%S" )+(1:n)*3600