2012-12-22 126 views
4

我正在使用quantmod軟件包來提取庫存數據。在XTS代碼getSymbols(quantmod)給出錯誤日期

Data = getSymbols('LON:ADN',src="google",auto.assign=FALSE, from = '2011-08-10') 

結果如預期,但是仔細觀察它顯示交易爲2012年10月21日(10月21日)的體積這是一個星期日的,因此顯然是錯誤的。其他幾個星期天也包括在內。不幸的是週末的錯誤似乎已經使其餘的數據不一致。

有沒有人遇到類似的問題提取與quantmod之前,如果是的話,他們是否知道周圍的方式嗎?

感謝

+0

我正在使用'quantmod'軟件包的最新版本(0.3-17),我沒有問題。我得到2012-10-19的數據,下一個是2012-10-22。也許你沒有使用最新版本?你可以通過運行'installed.packages()[「quantmod」,「Version」]來檢查。 – flodel

+0

我也沒有複製這個問題('library(lubridate); unique(wday(Data,label = T))'顯示沒有周末的日子)。我會檢查一個時區錯誤轉移你的日期。這是POSIXct的常見問題,因爲它們是日期時間表示,沒有時間的日期表示爲午夜。因此,如果一個函數轉換時區,你可以改變日子。 – MattBagg

+0

我之前遇到過這個問題 - 在最近的內存中實際上是相當不斷的。我曾經找到一個描述情況的網頁,我將再次嘗試查找。 – BenBarnes

回答

3

正如你在評論中提到的,這看起來像一個時區的問題,可能是由於在xts功能POSIX日期轉換(見this answer)。

我能夠在新鮮的R會話中再現問題時Sys.getenv("TZ")是一個空字符串。時區設置爲任何有效的時區(不是所有的測試),例如,"America/Chicago"產量預期日期,即沒有星期天:

在一個新的會話(2012年12月16日是一個星期天):

Sys.getenv("TZ") 
# [1] "" 

library(quantmod) 
Data <- getSymbols('LON:ADN',src="google",auto.assign=FALSE, from = '2011-08-10') 
tail(index(Data)) 
# [1] "2012-12-13" "2012-12-16" "2012-12-17" "2012-12-18" "2012-12-19" "2012-12-20" 

然後更改時區

Sys.setenv(TZ="America/Chicago") 

Data <- getSymbols('LON:ADN',src="google",auto.assign=FALSE, from = '2011-08-10') 
tail(index(Data)) 
# [1] "2012-12-14" "2012-12-17" "2012-12-18" "2012-12-19" "2012-12-20" "2012-12-21" 

沒有星期天。

+0

感謝您的幫助,但我只是檢查了 - 所有需要完成的工作是將Sys.getenv(「TZ」)設置爲有效的時區。你可以編輯你的答案,使其真正清晰,並幫助未來困惑?歡呼 –

+0

@ N.McA。,很好的指針。更新並刪除了有關r-forge的部分,但並未解決問題。 – BenBarnes

+0

這應該在R-forge版本(quantmod v0.3-22)中修復, –

相關問題