2015-03-23 5 views
1

objet simple zoo estrollapply: fixe l'observation de départ dans chaque fenêtre coulissante?

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 

Est-il possible de faire cette observation de départ est fixé, soit à la date "04/02/1970" nous avons en moyenne sur '11, 12, 13, 14' non plus ' 12, 13, 14 'et ainsi de suite? Bien sûr, on peut le faire à travers la boucle, mais si le problème est un peu plus compliqué, les boucles sont très lentes, et je cherchais quelque chose qui est aussi rapide que apply, ou rollapply.

Répondre

2

Définissez la largeur égale à la longueur de la série et utiliser partial = TRUE:

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

Vous pouvez également utiliser cumsum(z)/seq_along(z)

+0

grâce, son travail –

+0

premier est mieux, parce que je dois estimer les régressions avec extrémité gauche fixe, donc la première option est exactement ce qui est nécessaire. C'est assez flexible. –