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 или новее, так как эта функция была добавлена в последнее время.