Р: Заполнение пропущенных дат во временном ряду? - PullRequest
17 голосов
/ 24 августа 2010

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

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

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 24 августа 2010

Немного проще, если вы используете «пустой» 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: Для данных в течение дня (используя превосходное предложение xout= Габора):

> index(x) <- as.POSIXct(index(x))
> na.locf(x, xout=seq(head(index(x),1),tail(index(x),1),by="15 min"))
6 голосов
/ 24 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...