我從雅虎(下面的代碼)下載了股票市場數據 - 對於上下文,起初我嘗試了getSymbols(^DJI)
,但我收到了與雅虎有關的錯誤消息......不同的問題。R中的時間序列中的子設置時間
的一點是,一旦下載,導入R,I按摩它到足夠接近的時間序列的格式,以能夠運行chartSeries(DJI)
:
require(RCurl)
require(foreign)
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv")
DJI <- read.csv(text = x, sep =",")
DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date
rownames(DJI) <- DJI$Date # Assigning Date to row names
DJI$Date <- NULL # Removing the Date column
chartSeries(DJI, type="auto", theme=chartTheme('white'))
即使數據集不是一個真正的時間序列:
> is.ts(DJI)
[1] FALSE
問題出現時,我試圖找出日期,例如最小的clo唱出道指的價值。我可以這樣做
> DJI[DJI$Close == min(DJI$Close),]
Open High Low Close Adj.Close Volume
1985-05-01 1257.18 1262.81 1239.07 1242.05 1242.05 10050000
產生整個行,包括行名稱(1985-05-01
),這是我想要的只是一部分。不過,如果我堅持剛開的實際日期,我必須兼顧包含日期,第二個數據集的一列:
require(RCurl)
require(foreign)
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv")
DJI <- read.csv(text = x, sep =",")
DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date
rownames(DJI) <- DJI$Date # Assigning Date to row names
DJI.raw <- DJI # Second dataset for future subsetting
DJI$Date <- NULL # Removing the Date column
這確實讓我跑
> DJI.raw$Date[DJI.raw$Close == min(DJI.raw$Close)]
[1] "1985-05-01"
此外,我不認爲將數據集轉換爲.xts
文件會有所幫助。
請注意,當您將日期分配給rownames時,它們會變回字符。這就是說,如果你不想在data.frame中包含日期的另一列,並且日期是字符,那麼你可以簡單地使用'rownames(DJI)[DJI $ Close == min(DJI $關閉)]' – digEmAll
@digEmAll我假設一個時間序列需要行名稱作爲日期。這不正確嗎?另外,如果我將日期列保留在數據集內,則無法運行'chartSeries()'... – Toni
是的,這是可能的(我不知道chartSeries函數),但這並不意味着您不能擁有在data.frame anyaway中將一列列傳遞給chartSeries ...例如'chartSeries(DJI [, - 1],type =「auto」,theme = chartTheme('white'))'(-1表示我們沒有將位置1的列傳遞給chartSeries,當然如果Date列在位置2,你應該通過-2等等......) – digEmAll