2015-08-26 6 views
3

Я пытаюсь вычислить некоторые статистические данные для движущегося окна, и я использую rollapply в пакете zoo. Мой вопрос заключается в том, как мне получить rollapply, чтобы применить эту функцию к предыдущим n наблюдениям, а не к текущему наблюдению и предыдущим наблюдениям n-1, поскольку, как кажется, выравнивание справа.выравнивание и смещение в rollapply

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 «Если ширина простого числовой вектор его элементы рассматриваются как ширина должна интерпретироваться в сочетании с совместитесь а если ширина список его компоненты рассматриваются как смещения В приведенных выше случаях, если длина ширины равна 1, тогда ширина перерабатывается для каждой точки. Если ширина представляет собой список, ее компоненты представляют собой целочисленные смещения, так что i-й компонент списка относится к точкам времени в положениях i + width [[i]]. " Но я понятия не имею, что это означает с точки зрения R-кода, и нет примера.

ответ

4

Nevermind, я расшифровал 'помощь'. Добавление параметра width в rollapply как это:

 width=list(-1:-5) 

выполняет его.

0

Если я правильно читаю, вы просто хотите, чтобы столбец «сдвинулся» на один - так, чтобы значение для строки 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) 
+0

спасибо, но я понимаю, как заставить его делать то, что я хотел. – TBP

 Смежные вопросы

  • Нет связанных вопросов^_^