我有一个几年长的动物园对象。
这是每日报价的时间序列(第一栏:日期,第二栏:报价)
我希望将这个长时间序列分成日历年子集,最终目标是将这些数据绘制在一个图表中,其水平轴为一年。
(我不想将我的源日常数据转换为每月数据或任何其他时间步数......)。
谢谢。
答案 0 :(得分:0)
这是一种方式
library(quantmod)
getSymbols("SPY", src='yahoo', from='2000-01-01', to='2012-01-01')
SPY <- as.zoo(Ad(SPY))
# Now I have zoo data with a single value for each day (like you say you have)
# Convert it to xts so that I can use xts' split method
mydata <- as.xts(SPY)
# Split data by years. Give them rownames that are day of year instead of
# specific dates. cbind data together and plot
ts.plot(do.call(cbind, lapply(split(mydata, 'years'), function(x) {
zoo(x, 1:NROW(x))
})), col=rainbow(nyears(mydata)))
或者,
tapply(SPY, format(index(SPY), "%Y"), c)
将按年拆分,不需要转换为xts