R: Заполнение отсутствующих дат в временном ряду?

У меня есть временный ряд зоопарка с отсутствующими днями. Чтобы заполнить его и иметь непрерывную серию, я делаю...

Я генерирую хронологическую последовательность времени от начала до конца.

Я объединять свою серию с этим.

Я использую na.locf для замены NA с las obscervation.

Я удаляю последовательность синтетических хронов.

Могу ли я сделать то же самое проще? Может быть, с некоторой функцией индекса, связанной с частотой?

Ответы

Ответ 1

Это немного проще, если вы используете "пустой" zoo объект с индексом.

> 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: Для внутридневных данных (с использованием предложения Gabor отлично xout=):

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

Ответ 2

Это рассмотрено в вопросе 13 zoo FAQ http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf, который использует аргумент xout = na.locf для устранения шага слияния, Убедитесь, что вы используете zoo 1.6.4 или новее, так как эта функция была добавлена ​​в последнее время.