在我的数据集中,日期具有以下格式:
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。它不包括当天的工作时间。
答案 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