在R中创建特定的日期/时间序列

时间:2012-12-23 07:11:26

标签: r datetime sequence

我想创建一个列,其中日期/时间序列每小时增加一年或一个月(例如)。我使用这样的代码来生成这个序列:

start.date<-"2012-01-15"
start.time<-"00:00:00"
interval<-60 # 60 minutes
increment.mins<-interval*60 
x<-paste(start.date,start.time)

for(i in 1:365){
   print(strptime(x, "%Y-%m-%d %H:%M:%S")+i*increment.mins)
}

但是,我不知道如何指定日期和小时序列的范围。另外,我在处理第一个小时“00:00:00”时遇到了问题?不确定指定一个月,一年等的日期/时间序列长度的最佳方法是什么?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:7)

我强烈建议您使用POSIXct数据类型。通过这种方式,您可以毫无问题地使用seq,并根据需要使用这些数据。

start <- as.POSIXct("2012-01-15")
interval <- 60

end <- start + as.difftime(1, units="days")

seq(from=start, by=interval*60, to=end)

现在,您可以使用时间戳向量执行任何操作。

答案 1 :(得分:1)

试试这个。 mondate非常聪明地提前一个月。例如,它将从1月的最后一天推进到2月的最后一天,而其他日期/时间类往往超过3月。chron不使用时区,因此您无法获得代码的时区错误因为你可以使用POSIXct。此处x来自问题。

library(chron)
library(mondate)

start.time.num <- as.numeric(as.chron(x))

# +1 means one month.  Use +12 if you want one year.
end.time.num <- as.numeric(as.chron(paste(mondate(x)+1, start.time)))

# 1/24 means one hour.  Change as needed.
hours <- as.chron(seq(start.time.num, end.time.num, 1/24))