2012-10-18 24 views
2

假设我有一组动物园数据与{0,1}集合中的信号。任何方法用较低的时间尺度填充(填充)每月动物园对象信号?

例如

  a b c 
Oct 2005 1 0 1 
Nov 2005 0 1 1 
Dec 2005 0 1 0 
Jan 2006 1 0 0 
Feb 2006 1 1 0 
Mar 2006 0 0 1 
Apr 2006 0 0 1 
May 2006 0 1 1 
Jun 2006 1 1 0 
Jul 2006 0 1 1 
Aug 2006 1 0 0 
Sep 2006 0 1 1 
Oct 2006 0 1 1 
Nov 2006 1 0 0 
Dec 2006 0 0 1 
Jan 2007 1 1 1 
Feb 2007 0 1 0 
Mar 2007 1 1 0 
Apr 2007 0 0 0 
May 2007 1 0 0 

是否有一个聪明的矢量化方法来填充每月数据与信号值之间的月份?此外,它需要滞后一个。第1排,2005年10月。 a,b,c = c(1,0,1),我想用集合{1,0,1}填充2005年11月的所有内容。接下来,将是2005年11月= {0,1,1},并且12月份全部将填充这些值... 等等,直到第n个月。

我宁愿从每月的规模开始生成,但要分析每日生成的值。我正在考虑像excel中的自动过滤或数据透视表。

回答

2

这实际上相当直接,感谢动物园。首先,将您的对象的索引从yearmon转换为Date。然后从该系列的开始到结束生成日期序列。最后,合并并填写缺失的值。

# assuming your monthly series is called 'Z' 
# create new object and convert index to Date 
z <- Z 
index(z) <- as.Date(index(z)) 

# generate daily sequence 
# note that yearmon are converted to the first Date of the month, 
# so I add one month and subtract one day from the last yearmon value 
dailySeq <- seq(start(z), as.Date(end(Z)+1/12)-1, by="1 day") 

# merge z with empty zoo object containing the new daily index 
d <- merge(z, zoo(,dailySeq)) 
# fill in missing values using last-observation-carried-forward 
d <- na.locf(d)