R:填写时间序列中缺少的日期?

时间:2010-08-24 10:35:41

标签: r time-series fill zoo

我有一个动物园时间序列,错过了几天。 为了填补它并有一个连续的系列我做...

我从头到尾生成一个chron日期时间序列。

我将我的系列与此合并。

我使用na.locf代替具有拉斯维加斯的NA。

我删除了syntetic chron序列。

我可以更轻松地做同样的事吗? 也许有一些与频率有关的指数函数?

2 个答案:

答案 0 :(得分:7)

如果使用带有索引的“空”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 

编辑: 对于日内数据(使用Gabor的优秀xout=建议):

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

答案 1 :(得分:6)

动物园FAQ http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf的问题13涵盖了这一点,该问题使用na.locf的xout =参数来消除合并步骤。由于最近添加了此功能,请确保您使用的是动物园1.6.4或更高版本。