2010-08-24 13 views
16

Ho una serie temporale di zoo con giorni mancanti. Per riempirlo e avere una serie continua, faccio ...R: riempimento di date mancanti in una serie storica?

Genero una sequenza cronologica data-ora dall'inizio alla fine.

Unisco la mia serie a questa.

Uso na.locf per sostituire NA con las obsservation.

Rimuovere la sequenza cronologica sintetica.

Posso fare lo stesso più facilmente? Forse con qualche funzione di indice relativa alla frequenza?

risposta

7

È leggermente più semplice se si utilizza un oggetto "vuoto" zoo con un indice.

> 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: Per i dati intra-day (utilizzando eccellente xout= suggerimento di Gabor):

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

Come sarebbe se il mio incremento di tempo fosse di 15 minuti e chron ?? grazie – skan

+0

In base alla mia breve occhiata a '? Seq.dates', non sembra che sia possibile creare una sequenza di' chron' in giornata con 'seq'. Consiglierei di usare una classe di indice diversa. –

Problemi correlati