2010-08-24 6 views
16

J'ai une série temporelle de zoo avec des jours manquants. Afin de le remplir et d'avoir une série continue je fais ...R: Remplir des dates manquantes dans une série temporelle?

Je génère une séquence chrono-horaire du début à la fin.

Je fusionne ma série avec celle-ci. J'utilise na.locf pour remplacer les NA par une obsservation.

Je supprime la séquence chrono-syntétique.

Puis-je faire la même chose plus facilement? Peut-être avec une fonction d'index liée à la fréquence?

Répondre

7

C'est un peu plus facile si vous utilisez un objet zoo "vide" avec un index.

> x <- zoo(1:10,Sys.Date()-10:1)[c(1,3,5,7,10)] 
> empty <- zoo(order.by=seq.Date(head(index(x),1),tail(index(x),1),by="days")) 
> na.locf(merge(x,empty)) 
2010-08-14 2010-08-15 2010-08-16 2010-08-17 2010-08-18 
     1   1   3   3   5 
2010-08-19 2010-08-20 2010-08-21 2010-08-22 2010-08-23 
     5   7   7   7   10 

EDIT: Pour les données intra-jour (en utilisant une excellente suggestion xout= de Gabor):

> index(x) <- as.POSIXct(index(x)) 
> na.locf(x, xout=seq(head(index(x),1),tail(index(x),1),by="15 min")) 
+0

Comment serait-ce si mon incrément de temps est 15min et chron ?? merci – skan

+0

D'après mon bref aperçu de '? Seq.dates', il ne semble pas que vous puissiez créer une séquence' chron' intra-day avec 'seq'. Je recommanderais d'utiliser une classe d'index différente. –

Questions connexes