我一直在尝试合并两个ts对象,第二个正好在下一个对象之后开始.例如,采用以下两个时间序列
ts1<-ts(c(1:12),star=c(2014,1),freq=12)
ts2<-ts(c(13:24),star=c(2015,1),freq=12)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它们都完美匹配,以便从这两个ts对象中产生单个ts.我认为合乎逻辑的答案是rbind()函数.但它从中产生了一个矩阵,如下......
> rbind(ts1,ts2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
ts1 1 2 3 4 5 6 7 8 9 10 11 12
ts2 13 14 15 16 17 18 19 20 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
我试过没有成功的其他功能,如merge,cbind.使用c()我设法得到一个唯一的时间序列,主要问题是我丢失了原始时间序列的结构属性,这很糟糕,因为我试图使用新ts的函数预测,但它给了我这个:
Error: variables ... were specified with different types from the fit
Run Code Online (Sandbox Code Playgroud)
我很高兴能够在时间序列中添加额外的观察结果.比如在2015年1月将值13添加到ts1,但我还没找到如何做到这一点.
我认为很有趣,因为我认为这是一个非常自然的东西要求一个ts对象,但我还没有发现任何其他问题可以帮助我.好吧,希望这不是一个太愚蠢的问题.
您需要重新分配第一个系列中的属性.
> ts(c(ts1,ts2), start=start(ts1), frequency=frequency(ts1))
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2014 1 2 3 4 5 6 7 8 9 10 11 12
2015 13 14 15 16 17 18 19 20 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
我想你正在寻找类似的东西
comb <- ts.union(ts1, ts2)
pmin(comb[,1], comb[,2], na.rm = TRUE)
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#2014 1 2 3 4 5 6 7 8 9 10 11 12
#2015 13 14 15 16 17 18 19 20 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以使用 xts 包,它将为您处理细节(例如,即使该系列有差距)
\n\nlibrary(xts)\nts1<-as.xts(ts(c(1:12),star=c(2014,1),freq=12))\nts2<-as.xts(ts(c(13:24),star=c(2015,1),freq=12))\nstr(ts3 <- c(ts1, ts2))\n# An \xe2\x80\x98xts\xe2\x80\x99 object on Jan 2014/Dec 2015 containing:\n# Data: int [1:24, 1] 1 2 3 4 5 6 7 8 9 10 ...\n# Indexed by objects of class: [yearmon] TZ: \n# xts Attributes:\n# NULL\nRun Code Online (Sandbox Code Playgroud)\n\n干杯,彼得
\n