我有一个列向量,它体现了月平均降雨量数据。我想为列向量的每个元素分配一个日期。我使用ts (column vector , freq=12,start=c(1901,1)
,但我得到的输出不是我想要的。相反,我需要可用于" xts' package ....日期格式如(年/月/日)1901-01-01 ,1901-02-01 .....
答案 0 :(得分:0)
seq(as.Date("1910/1/1"), as.Date("1999/1/1"), "years")
你也可以使用更短的间隔
seq(as.Date("2000/1/1"), as.Date("2003/1/1"), by="3 months")
答案 1 :(得分:0)
您可以使用seq.Date
(seq
方法自动部署在Date
个对象上)或使用timeBasedSeq
xts
创建日期序列封装
无论如何,如果您正在使用xts
,为方便起见,我建议使用timeBasedSeq
。
例如,以下内容会创建从1901-01-01
到1901-03-15
的序列。序列是每天,因为我们指定/d
。
library(xts)
timeBasedSeq('19010101/19010315/d')
## [1] "1901-01-01" "1901-01-02" "1901-01-03" "1901-01-04" "1901-01-05" "1901-01-06"
## [7] "1901-01-07" "1901-01-08" "1901-01-09" "1901-01-10" "1901-01-11" "1901-01-12"
## [13] "1901-01-13" "1901-01-14" "1901-01-15" "1901-01-16" "1901-01-17" "1901-01-18"
## [19] "1901-01-19" "1901-01-20" "1901-01-21" "1901-01-22" "1901-01-23" "1901-01-24"
## [25] "1901-01-25" "1901-01-26" "1901-01-27" "1901-01-28" "1901-01-29" "1901-01-30"
## [31] "1901-01-31" "1901-02-01" "1901-02-02" "1901-02-03" "1901-02-04" "1901-02-05"
## [37] "1901-02-06" "1901-02-07" "1901-02-08" "1901-02-09" "1901-02-10" "1901-02-11"
## [43] "1901-02-12" "1901-02-13" "1901-02-14" "1901-02-15"
有关详细信息,请参阅?timeBasedSeq
。
修改强>
然后,您可以通过提供此日期序列作为对象的索引来创建zoo
或xts
对象。
例如,让我们创建10个随机统一变量并添加索引以创建xts
时间序列对象,以及zoo
时间序列对象(后者是{{1}的格式你在这篇文章的评论中提到过。)
SanMartinoPPts
答案 2 :(得分:0)
如果这是月度数据,您可能希望使用"yearmon"
类而不是"Date"
类。这是两种方式。
如果tt
是问题中创建的对象,i。即tt <- ts(x, freq = 12, start = c(1901 , 1))
其中x
是数据,请尝试以下操作:
xt <- as.xts(tt)
使用"yearmon"
类作为索引,或者如果你想要"Date"
类索引
time(xt) <- as.Date(time(xt)) ##
这也有效,并提供"yearmon"
类索引。
xt2 <- as.xts( zooreg(x, as.yearmon("1901-01"), freq = 12) )
和"Date"
类索引可以与##
类似地派生出来。