如何在R中合并不同长度的多个时间序列

时间:2013-04-23 19:23:44

标签: r time-series

我正在从服务器中检索一些数据并获取大约200个时间序列对象,所有这些对象都具有不同的长度。这是不可操作的,因此希望将它们合并到一个对象中并在没有可用数据的那些位置写入NA。同样对于每个系列我都有多个变量。我尝试了一个循环,但仍然没有操作,必须有一个更优雅的方式来排序。例如假设我有以下内容:

    library(zoo)
    a=zoo(matrix(rnorm(300), 100, 3),Sys.Date()-100:1)
    b=zoo(matrix(rnorm(375), 125, 3),Sys.Date()-125:1)
    c=zoo(matrix(rnorm(525), 175, 3),Sys.Date()-175:1)
    d=zoo(matrix(rnorm(450), 150, 3),Sys.Date()-150:1)
    e=list(a,b,c,d)
    z=do.call(merge,e)

编辑:这有效

2 个答案:

答案 0 :(得分:4)

您可以将do.callmerge一起使用。它迭代地合并动物园时间序列列表。

do.call(merge,list(a,b,c,d))

我认为缺失的值应该用NAs填充。

答案 1 :(得分:1)

如果您想将动物园对象添加为新列,cbind函数就是您的朋友。

data <- cbind(a,b,c,d)

动物园物品的美妙之处在于它们可能是粗糙的。因此,当时间序列的长度不同时,自动返回NA值。此外,动物园还有一个很好的多变量时间序列自动绘图功能,以及许多其他功能:

plot(data)