rollapply中的对齐和偏移

时间:2015-08-26 18:56:16

标签: r zoo rollapply

我正在尝试计算移动窗口的一些统计信息,并在动物园包中使用rollapply。我的问题是如何让rollapply将该函数应用于前面的n个观察值而不是当前观察值和前面的n-1个观察值,因为右对齐似乎可以。

require(zoo)
z <- data.frame(x1=11:111, x2=111:211, x3=as.Date(31:131))#generate data
output<-data.frame(dates=z$x3,
                   rollapply(z[,1:2],by.column=TRUE, 5, max, fill=NA, align='right'))

我有一个预感,这是由回答?rollapply“如果width是一个普通的数字向量,它的元素被认为是与align一起解释的宽度,而如果width是一个列表,它的组件被视为偏移。在上面如果宽度的长度为1,则宽度为每个第s点再循环。如果width是列表,则其组件表示整数偏移,使得列表的第i个分量指向位置i + width [[]的时间点。一世]]。”但是我不知道R代码意味着什么,没有提供任何例子。

2 个答案:

答案 0 :(得分:5)

没关系,我破译了'帮助'。将参数width添加到rollapply,如下所示:

     width=list(-1:-5) 

完成它。

答案 1 :(得分:1)

如果我正确阅读,你只需要列#34;移动&#34;减一 - 这样第n行的值就是行n + 1现在的值。

使用lag函数

可以轻松完成此操作
z <- data.frame(x1=11:111, x2=111:211, x3=as.Date(31:131))#generate data
output<-data.frame(dates=z$x3,
                   rollapply(z[,1:2],by.column=TRUE, 5, max, fill=NA, align='right'))
output$x1 <- lag(output$x1, 1)
output$x2 <- lag(output$x2, 1)
相关问题