FRED数据:将季度数据汇总成年度数据

时间:2018-04-13 22:35:08

标签: r aggregate quantmod

我需要将季度数据转化为年度数据,每年总计超过4个季度。当我搜索stackoverflow.com时,我发现使用函数来总结句点,似乎有效。但是,格式不匹配,所以我无法使用转换的年份数据数组与其他数组

例如,FRED的年度数据如下:

2009-01-01       12126.078
2010-01-01       12739.542
2011-01-01       13352.255
2012-01-01       14061.878
2013-01-01       14444.823

但是,当我使用以下函数更改数据时:

library("quantmod")
library(zoo)
library(mFilter)
library(nleqslv)

fredsym <- c("PROPINC")
quarter.proprietors_income <- PROPINC

## convert to annual
as.year <- function(x) as.integer(as.yearqtr(x)) # a new function
annual.proprietors_income <- aggregate(quarter.proprietors_income, as.yearqtr, sum) # sum over quarters

它改变了:

2016-01-01 1327.613
2016-04-01 1339.493
2016-07-01 1346.067
2016-10-01 1354.560
2017-01-01 1380.221
2017-04-01 1378.637
2017-07-01 1381.911
2017-10-01 1403.114

到此:

2011 4574.669
2012 4965.486
2013 5138.968
2014 5263.208
2015 5275.225
2016 5367.733
2017 5543.883

我需要的是拥有年度数据但使用原始的YYYY-MM-DD格式,每年的数据应该显示为01-01 ..否则它不适用于其他年度数据... < / p>

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

在下面的注释中使用DF使用cut,如下所示:

aggregate(DF["value"], list(year = as.Date(cut(as.Date(DF$Date), "year"))), sum)

,并提供:

        year    value
1 2016-01-01 5367.733
2 2017-01-01 5543.883

注意

Lines <- "Date value
2016-01-01 1327.613
2016-04-01 1339.493
2016-07-01 1346.067
2016-10-01 1354.560
2017-01-01 1380.221
2017-04-01 1378.637
2017-07-01 1381.911
2017-10-01 1403.114"
DF <- read.table(text = Lines, header = TRUE)

答案 1 :(得分:-1)

我发现,aggregate命令使这个类成为动物园。不再有xts作为时间序列保留。

或者,apply.yearly似乎有效。

annual.proprietors_income <- apply.yearly(xts(quarter.proprietors_income),sum)

现在是xts。因为它们每周都会显示为YYYY-10-01的结束季度。我怎样才能进入YYYY-01-01 ......