R:将长动物园时间序列拆分为日历

R:将长动物园时间序列拆分为日历,r,zoo,R,Zoo,我有一个长达几年的动物园对象 这是每日报价的时间序列(第一列:日期,第二列:报价) 我希望将这一长时间序列拆分为日历年子集,最终目标是将这些数据绘制在一个图表中,其横轴为一年 (我不想将源每日数据转换为每月数据或任何其他时间段…) 多谢各位 这里有一个方法 library(quantmod) getSymbols("SPY", src='yahoo', from='2000-01-01', to='2012-01-01') SPY <- as.zoo(Ad(SPY)) # Now I ha

我有一个长达几年的动物园对象

这是每日报价的时间序列(第一列:日期,第二列:报价)

我希望将这一长时间序列拆分为日历年子集,最终目标是将这些数据绘制在一个图表中,其横轴为一年

(我不想将源每日数据转换为每月数据或任何其他时间段…)

多谢各位

这里有一个方法

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)))

将按年份拆分,无需转换为
xts

谢谢您的回复。事实上,这些是日期,但(格式为YYYY-mm-dd),而不是一年中的几天。无论如何,我对您建议的代码进行了一些修改,效果很好,只是我更喜欢横轴上的月份,而不是(大约)250的整数。我想您希望横轴的长度为一年?如果是这样,您必须更改索引;如果你不改变指数,那么你将有一个超过1年的水平轴。这里有一个大致相同的变化:
tt@G.Grothendieck——这真的很方便!
tapply(SPY, format(index(SPY), "%Y"), c)