apply.quarterly()仅将每个季度的结束月份作为索引,请参阅以下示例:
library(quantmod)
getSymbols.FRED("CPILFESL")
apply.quarterly(CPILFESL,mean)
CPILFESL
1957-03-01 28.60000
1957-06-01 28.83333
1957-09-01 29.03333
1957-12-01 29.26667
1958-03-01 29.40000
1958-06-01 29.53333
...
我真正想要的是:
CPILFESL
1957-01-01 28.60000
1957-04-01 28.83333
1957-07-01 29.03333
1957-10-01 29.26667
1958-01-01 29.40000
1958-04-01 29.53333
...
那么在申请apply.quarterly()之后如何将每个季度的第一个月设置为索引?
由于
答案 0 :(得分:4)
如果x
是[{1}}的结果,那么:
apply.quarterly
time(x) <- as.Date(as.yearqtr(time(x)))
来自zoomod包所依赖的zoo包,所以它应该已经加载了。
答案 1 :(得分:1)
我遇到了很多这样的问题 - 通常它们是在我合并来自多个来源的数据时出现的,最简单的方法是在R
聚合步骤中更改输出。
要做到这一点,我有一堆帮助函数。这是一个简单的功能,可以为您改变月份。
library(quantmod)
getSymbols("CPILFESL", src = 'FRED')
qd <- apply.quarterly(CPILFESL,mean)
monthSwitch <- function(index, monChng) {
index_LT <- as.POSIXlt(index)
index_LT$mon <- index_LT$mon + monChng
as.Date(index_LT)
}
index(qd) <- monthSwitch(index(qd), -2)
基本直觉是:更改为POSIXlt
,直接编辑月份值,然后使用as.Date
更改回简单的整数日期。
答案 2 :(得分:0)
还可以编辑xts索引向量本身!
library(xts)
library(lubridate)
test_daily <- xts(1:365, Sys.Date()+1:365)
test_monthly <- apply.monthly(test_daily,mean)
index(test_monthly) <- floor_date(index(test_monthly),"month")
test_monthly
我使用lubridate to convert the dates,但我确信还有很多其他方法可以编辑索引向量。
对我而言,即使xts对象是数据帧,这也很有效。
我这样做的原因只是让图表上的轴标签为land where they intuitively belong。