我想从FRED系列创建数据集,并使用quantmod
包,如下所示:
library(quantmod)
getSymbols(c('FEDFUNDS', 'GDPPOT', 'DGS10'), src='FRED')
dat <- buildData(FEDFUNDS ~ DGS10 + GDPPOT, na.rm=FALSE)
我需要的是一个xts对象,该对象具有最长时间序列中所有日期的观测值,而缺少值可以填充较短的时间序列。在上面的示例中,我得到:
> head(dat, 2)
FEDFUNDS DGS10 GDPPOT
1962-10-01 2.90 3.93 3141.6
1963-01-01 2.92 NA 3173.9
> head(FEDFUNDS, 2)
FEDFUNDS
1954-07-01 0.80
1954-08-01 1.22
> head(DGS10, 2)
DGS10
1962-01-02 4.06
1962-01-03 4.03
> head(GDPPOT, 2)
GDPPOT
1949-01-01 1864.8
1949-04-01 1885.2
FEDFUNDS系列被截断以匹配DGS10系列的最小日期值。我喜欢
buildData()
函数的便利性,并且很乐意将其用于此任务,但是我想知道如何保持缺失的观察结果。非常感谢您的宝贵时间!
编辑:我不想使用合并的原因是,某些数据系列具有不同的周期性,并且
buildData()
自动进行处理。 最佳答案
buildData
没有提供您想要的东西,尤其是因为DGS10
在假期(包括一年中的第一天)处于NA
且星期日没有任何条目。因此,如果您尝试使用问题中的内容,则会遇到以下奇怪情况
> tail(dat,16)
FEDFUNDS DGS10 GDPPOT
2005-07-01 3.26 4.06 12611.7
2007-01-01 5.25 NA 13072.4
2007-10-01 4.76 4.56 13314.1
2008-01-01 3.94 NA 13393.0
2008-04-01 2.28 3.57 13471.2
2008-07-01 2.01 4.01 13547.1
2008-10-01 0.97 3.77 13619.9
2009-01-01 0.15 NA 13689.2
2009-04-01 0.15 2.68 13753.1
2009-07-01 0.16 3.55 13813.7
2009-10-01 0.12 3.21 13872.0
2010-01-01 0.11 NA 13928.2
2010-04-01 0.20 3.89 13985.8
2010-07-01 0.18 2.96 14044.7
2010-10-01 0.19 2.54 14109.8
2011-04-01 0.10 3.46 14247.2
缺少几行,包括2006年全年。
dat
是zoo
对象,而不是xts
。如果您使用的是GDPPOT,则大概要使用季度数据。试试这个:
FEDFUNDSq <- aggregate(na.omit(FEDFUNDS), as.yearqtr, first)
DGS10q <- aggregate(na.omit(DGS10), as.yearqtr, first)
GDPPOTq <- aggregate(na.omit(GDPPOT), as.yearqtr, first)
dat2 <- as.xts(merge(FEDFUNDSq, DGS10q, GDPPOTq))
as.xts()
仅存在于此,因为您已请求它。这应该为您提供NA
所需的位置,而不是您不需要的位置。例如,以下内容看起来比前面的内容更好。> head(tail(dat2,66),25)
FEDFUNDSq DGS10q GDPPOTq
2005 Q3 3.26 4.06 12611.7
2005 Q4 3.78 4.39 12684.6
2006 Q1 4.29 4.37 12758.9
2006 Q2 4.79 4.88 12835.2
2006 Q3 5.24 5.15 12913.0
2006 Q4 5.25 4.62 12992.1
2007 Q1 5.25 4.68 13072.4
2007 Q2 5.25 4.65 13153.1
2007 Q3 5.26 5.00 13233.9
2007 Q4 4.76 4.56 13314.1
2008 Q1 3.94 3.91 13393.0
2008 Q2 2.28 3.57 13471.2
2008 Q3 2.01 4.01 13547.1
2008 Q4 0.97 3.77 13619.9
2009 Q1 0.15 2.46 13689.2
2009 Q2 0.15 2.68 13753.1
2009 Q3 0.16 3.55 13813.7
2009 Q4 0.12 3.21 13872.0
2010 Q1 0.11 3.85 13928.2
2010 Q2 0.20 3.89 13985.8
2010 Q3 0.18 2.96 14044.7
2010 Q4 0.19 2.54 14109.8
2011 Q1 0.17 3.36 14178.3
2011 Q2 0.10 3.46 14247.2
2011 Q3 NA NA 14316.8