2015-03-23 4 views
1

Простой объект зоопаркrollapply: исправить начальное наблюдение в каждом скользящем окне?

z <- zoo(11:15, as.Date(31:45)) 
as.data.frame(z) 
      z 
1970-02-01 11 
1970-02-02 12 
1970-02-03 13 
1970-02-04 14 
1970-02-05 15 
1970-02-06 11 
1970-02-07 12 
1970-02-08 13 
1970-02-09 14 
1970-02-10 15 
1970-02-11 11 
1970-02-12 12 
1970-02-13 13 
1970-02-14 14 
1970-02-15 15 
as.data.frame(rollapply(z, width=3, mean, align="right")) 
      rollapply(z, width = 3, mean, align = "right") 
1970-02-03          12.00000 
1970-02-04          13.00000 
1970-02-05          14.00000 
1970-02-06          13.33333 
1970-02-07          12.66667 
1970-02-08          12.00000 
1970-02-09          13.00000 
1970-02-10          14.00000 
1970-02-11          13.33333 
1970-02-12          12.66667 
1970-02-13          12.00000 
1970-02-14          13.00000 
1970-02-15          14.00000 

Можно ли сделать это наблюдение начало фиксировано, то есть на дату «1970-02-04», мы имеем в среднем за '11, 12, 13, 14' не более ' 12, 13, 14 'и т. Д.? Конечно, можно сделать это через цикл, но если проблема немного сложнее, петли очень медленные, и я искал что-то такое же быстрое, как apply, или rollapply.

ответ

2

Установите ширину равной длины серии и использовать partial = TRUE:

rollapplyr(z, length(z), mean, partial = TRUE) 

Вы можете также использовать cumsum(z)/seq_along(z)

+0

благодаря его рабочая –

+0

Первый из них лучше, потому что мне нужно оценить регрессию с левый конец фиксированный, поэтому первый вариант - именно то, что необходимо. Он достаточно гибкий. –

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

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