2

在我的数据集中,这些日子有这种格式:

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。它不包括仅一天的时间。

4

2 回答 2

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
于 2013-06-08T12:57:04.337 回答
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将字符向量转换为 class POSIXlt。我不知道为什么,但我认为很多人更POSIXct喜欢POSIXlt.

as.POSIXct( tail( days$day , 1 ) , format = "%Y-%m-%d %H:%M:%S" )+(1:n)*3600
于 2013-06-08T13:02:29.703 回答