2010-01-29 4 views
2

Étant donné que j'ai un jeu de données zoo, je voudrais effectuer une opération de glissement contre le résultat avec un autre jeu de données zoo.R calcul de la fenêtre glissante série zoo

 
> x 
         Y 
(09/24/09 08:00:13) 3.1 
(09/24/09 08:05:13) 4.2 
(09/24/09 08:10:13) 4.5 
(09/24/09 08:15:13) 9.4 
(09/24/09 08:20:13) 9.8 
(09/24/09 08:25:13) 7.7 
(09/24/09 08:30:13) 13.3 
(09/24/09 08:35:13) 6.5 
(09/24/09 08:40:13) 14.7 
(09/24/09 08:45:13) 23.5 
(09/24/09 08:50:13) 20.9 
(09/24/09 08:55:13) 8.5 

Mon but est de produire une moyenne « lisse » par itération à travers chaque intervalle de temps et l'obtention de la moyenne pour l'ensemble des points Y qui sont +/- 15 minutes du point courant.

J'ai une méthode de calcul de moyenne pour travailler, mais cela réduit la résolution des données. Je n'ai pas compris comment faire des sous-ensembles relatifs du zoo avec les mathématiques artibrary, la fenêtre devrait aider mais l'accès à l'index est difficile.

Merci.

Répondre

5

Utilisez rollmean. Voici un exemple:

x.Date <- as.Date(paste(2004, rep(1:4, 4:1), sample(1:28, 10), sep = "-")) 
x <- zoo(rnorm(12), x.Date) 
rollmean(x, 3) 

En vous cas, vous voulez retard vos données après avoir pris la moyenne puisque vous la moyenne autour d'un point dans le temps.

Enfin, vous devriez connaître la fonction rollapply dans zoo qui peut faire une opération de roulage sur n'importe quelle fonction (y compris celle que vous définissez).

+0

@Shane, vous êtes l'homme une fois de plus. Apprendre R J'essaie d'accomplir une certaine tâche, je n'ai pas été assez exposé à la bibliothèque. Merci! – Demosthenex

+0

Je suis une fois de plus reconnaissant de ne pas avoir à écrire une fonction personnalisée! Haha! – Demosthenex

Questions connexes