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