2010-08-24 16 views
16

Tengo una serie de tiempo del zoológico con días perdidos. Para llenarlo y tener una serie continua, lo hago ...R: ¿Llenar fechas que faltan en una serie temporal?

Genero una secuencia de fecha y hora de cronómetro de principio a fin.

Combino mi serie con esta.

Uso na.locf para sustituir NA con las obsservation.

Elimino la secuencia sintética del cron.

¿Puedo hacer lo mismo más fácil? ¿Quizás con alguna función de índice relacionada con la frecuencia?

Respuesta

7

Es un poco más fácil si utiliza un objeto "vacío" zoo con un índice.

> 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: Para los datos intradiarios (usando excelente xout= sugerencia 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

¿Cómo sería si mi incremento de tiempo es 15min y cron? gracias – skan

+0

Basándome en mi breve descripción de '? Seq.dates', no parece que pueda crear una secuencia' chron' de un día con 'seq'. Yo recomendaría usar una clase de índice diferente. –

Cuestiones relacionadas