R以季度第一天为索引合并季度数据

R以季度第一天为索引合并季度数据,r,quantmod,R,Quantmod,我可以根据每日时间序列生成季度OHLC日期: library(quantmod) getSymbols("SPY", from="2000-01-01", to=Sys.Date()) tail(SPY) dfQ <- to.quarterly(SPY[,6]) tail(dfQ) 库(quantmod) getSymbols(“SPY”,from=“2000-01-01”,to=Sys.Date()) 尾巴(间谍) 我想你这里有两个问题。第一个问题是如何在OHLC季度数据中设置平均值列

我可以根据每日时间序列生成季度OHLC日期:

library(quantmod)
getSymbols("SPY", from="2000-01-01", to=Sys.Date())
tail(SPY)
dfQ <- to.quarterly(SPY[,6])
tail(dfQ)
库(quantmod)
getSymbols(“SPY”,from=“2000-01-01”,to=Sys.Date())
尾巴(间谍)

我想你这里有两个问题。第一个问题是如何在OHLC季度数据中设置平均值列。第二个问题是如何在每个季度开始时使用邮票,而不是“最后”的邮票。xts/quantmod软件包假定您想要“最后一次”的日期戳,所以按照流程进行,只需在末尾替换日期戳即可

对于OHLC,我发现最好是自己进行OHLC计算。因此,不要将
mean
传递给
apply.quarterly()
,而是执行以下操作:

bars = apply.quarterly(xts(SPY[,6]), FUN = function(x){
  d=coredata(x);
  c(first(d),max(d),min(d),last(d),mean(d))
  } )
colnames(bars)=c("open","high","low","close","mean")
这使得:

...
2013-09-30 159.71 171.28 159.56 167.10 165.9822
2013-12-31 168.43 184.69 164.59 184.69 176.1416
2014-01-08 182.92 183.52 182.36 183.52 183.0340
然后,要确定日期戳:

index(bars) = as.Date(as.yearqtr(index(bars)))
要了解这一点,请先查看
索引(条)
,然后查看
as.yearqtr(索引(条))
,其中给出:

[1] "2000 Q1" "2000 Q2" "2000 Q3" ...
   ... "2013 Q3" "2013 Q4" "2014 Q1"
然后,幸运的是,
as.Date()
会为您提供每个季度开始的日期戳


最后一位是使用
索引(条)=…
(或
索引(条))将新索引分配回
对象季度平均数直到季度末才知道。如果将时间戳更改为季度初,可能会引入显著的偏差。确实要这样做吗?我需要这样做,因为我有许多其他数据系列,它们在季度初而不是季度末编制索引其他系列中的数据是季度末的数据,将时间戳移到季度末不是更有意义吗?这是一个可能的解决方案,但我不知道如何将季度的第一个日期转换为最后一个日期。我为我的无知道歉,因为这可能是我应该知道如何做的事情。使用
yearqtr
as.Date(as.yearqtr(Sys.Date())+.25)-1
非常感谢您的帮助。
[1] "2000 Q1" "2000 Q2" "2000 Q3" ...
   ... "2013 Q3" "2013 Q4" "2014 Q1"