У меня есть временной ряд зоопарка с пропущенными днями. Чтобы заполнить его и получить непрерывный ряд, я делаю ...
Я генерирую хрон-последовательность даты и времени от начала до конца.
Я объединяю свой ряд с этим.
Я использую na.locf заменить NA наблюдением лазера.
Я удаляю синтетическую последовательность хрон.
Могу ли я сделать то же самое проще? Может быть, с какой-нибудь индексной функцией, связанной с частотой?
Это описано в вопросе 13 часто задаваемых вопросов о зоопарке http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf , который использует аргумент xout = na.locf для исключения шага слияния. Убедитесь, что вы используете zoo 1.6.4 или новее, так как эта функция была добавлена недавно.
Это немного проще, если вы используете «пустой» объект 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
РЕДАКТИРОВАТЬ:
Для внутридневных данных (с использованием превосходного предложения Габора xout =
):
> index(x) <- as.POSIXct(index(x))
> na.locf(x, xout=seq(head(index(x),1),tail(index(x),1),by="15 min"))