2012-03-18 79 views
2

我有一個長達數年的動物園對象。R:將長久動物園時間系列分成日曆

這是一個時間序列,每天的報價(第一列:日期,第二欄:行情)

我要拆分這漫長的時間序列爲歷年子集,其最終目標是繪製在這些數據單個圖表,其橫軸爲一年的長度。

(我不想將我的源日常數據轉換爲月度數據或任何其他時間步...)。

謝謝。

回答

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

+0

感謝您的回覆。實際上,這些日期是(但格式爲YYYY-mm-dd),但不是一年中的幾天。 – tagoma 2012-03-18 21:46:32

+0

無論如何,我適應了一些你所建議的代碼,並且效果很好,除了我更喜歡水平軸上的一年中的幾個月,而不是整數達到(大約)250. – tagoma 2012-03-18 21:53:25

+0

我以爲你想讓水平軸成爲一年的長度?如果是這樣,你必須改變索引;如果你不改變索引,那麼你將有一個長於1年的橫軸。 – GSee 2012-03-18 21:55:13