我需要将季度数据转化为年度数据,每年总计超过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>
有没有办法解决这个问题?
答案 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 ......