2010-06-09 60 views
0

我剛剛開始使用R-,並且在某些時間序列數據中遇到了一些死鎖。R將偶發日期「事件」添加到時間序列圖

我有'動物園'格式的時間序列(日期和值),我想用事件發生時用十字標註。事件是不規則的,並以csv格式(只是日期,有時重複)。

我已經設法讀取日期等到一個R接受的格式 - 但我似乎無法得到一個方法來繪製主要時間序列與頂部註釋的次要事件?

更新: 對不起,我錯過了這一點前面 - 下面是我對工作數據的排序:

price <- get.hist.quote(instrument = "msft", quote = c("Cl", "Vol")) 

我現在要對這個比較鳴叫的次數(搜索項) ,但我只有以下形式的參差數據:

"February 28, 2010" 
"February 20, 2010" 
"February 20, 2010" 
"August 21, 2009" 

一些重複。 到目前爲止,我已經設法編寫了一個Python腳本來做一些清理(即一個日期,事件的元組),但我希望我可以使用R的原始數據工作?

非常感謝

回答

2

創建動物園系列,價格和dd.zoo(其中dd.zoo是dd.character作爲動物園對象中的每個日期的出現的次數),然後只將它們綁定在一起,並使用plot.zoo:

library(zoo) 
library(tseries) 

price <- get.hist.quote(instrument = "msft", quote = c("Cl", "Vol")) 

dd.character <- c("February 28, 2010", "February 20, 2010", 
    "February 20, 2010", "August 21, 2009") 
dd.Date <- as.Date(dd.character, "%B %d, %Y") 
dd.zoo <- aggregate(zoo(dd.Date), dd.Date, length) 

plot(cbind(price$Close, dd.zoo), type = c("l", "h"), heights = c(3, 1)) 

另一種可能性,如果你只是想表明與垂直線龍虎鬥覆蓋在關閉該日期是在dd.character是:

plot(price$Close) 
abline(v = time(dd.zoo)) 
2

提供了一個數據樣本都可以獲得更精確的答案,但你有兩個常規選項:

利用現有plot.zoo()功能,該地塊使用結束後可以添加註釋(例如)text()功能。或者使用ggplot2,您可以採用類似的方法創建圖並添加註釋(儘管它本身不接受zoo對象作爲輸入)。

此外,chartSeriesquantmod有很多功能設計與此目的,並且它接受zoo作爲輸入。

編輯:關於如何應對你在你的問題發佈數據

一個快速評論。第二組日期應該被轉換成一個動物園對象(可能帶有某種能指作爲數據,例如單詞「tweet」),然後與原始系列合併。所以你會在你的時間系列中增加一個代表這些偶發事件的專欄。在大多數情況下,該列將是NA

+0

好一點 - 更新問題 - 將plot.zoo()仍然是去哪裏? – malangi 2010-06-09 15:37:27

+0

謝謝謝恩 - 像一個魅力工作! – malangi 2010-06-09 20:42:11

+0

@flyingcrab - 太棒了!如果能夠發佈它,我們很樂意看到最終的輸出結果。 – Shane 2010-06-09 21:10:22