3

我正在从服务器检索一些数据并获得大约 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)

编辑:这有效

4

2 回答 2

4

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

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

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

于 2013-04-23T19:56:23.790 回答
1

If you want to add the zoo objects as new columns, the cbind function is your friend.

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

The beauty of zoo objects is that they can be ragged. Hence, NA values are automatically returned when the length of timeseries differ. Plus, zoo has a nice multivariate timeseries autoplot function, among many other things:

plot(data)
于 2015-10-05T04:45:42.070 回答