2
我有一个长达数年的动物园对象。R:将长久动物园时间系列分成日历
这是一个时间序列,每天的报价(第一列:日期,第二栏:行情)
我要拆分这漫长的时间序列为历年子集,其最终目标是绘制在这些数据单个图表,其横轴为一年的长度。
(我不想将我的源日常数据转换为月度数据或任何其他时间步...)。
谢谢。
我有一个长达数年的动物园对象。R:将长久动物园时间系列分成日历
这是一个时间序列,每天的报价(第一列:日期,第二栏:行情)
我要拆分这漫长的时间序列为历年子集,其最终目标是绘制在这些数据单个图表,其横轴为一年的长度。
(我不想将我的源日常数据转换为月度数据或任何其他时间步...)。
谢谢。
这里有一种方法
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
感谢您的回复。实际上,这些日期是(但格式为YYYY-mm-dd),但不是一年中的几天。 – tagoma 2012-03-18 21:46:32
无论如何,我适应了一些你所建议的代码,并且效果很好,除了我更喜欢水平轴上的一年中的几个月,而不是整数达到(大约)250. – tagoma 2012-03-18 21:53:25
我以为你想让水平轴成为一年的长度?如果是这样,你必须改变索引;如果你不改变索引,那么你将有一个长于1年的横轴。 – GSee 2012-03-18 21:55:13