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