R: Filling missing dates in a time series?
It's slightly easier if you use a "empty" zoo
object with an 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:For intra-day data (using Gabor's excellent xout=
suggestion):
> index(x) <- as.POSIXct(index(x))> na.locf(x, xout=seq(head(index(x),1),tail(index(x),1),by="15 min"))
This is covered in question 13 of the zoo FAQ http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf which uses the xout= argument of na.locf to eliminate the merge step. Be sure you are using zoo 1.6.4 or later since this feature was added recently.