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

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

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

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

Я использую na.locf заменить NA наблюдением лазера.

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

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

17
задан John Paul 24 September 2013 в 03:02
поделиться

2 ответа

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

6
ответ дан 30 November 2019 в 14:24
поделиться

Это немного проще, если вы используете «пустой» объект 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"))
7
ответ дан 30 November 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: