2012-03-26 87 views
1

我要麼誤解文檔,要麼與drop.time=TRUE參數在to.weekly()有問題。舉個簡單的例子,加起來時間分量到一些樣本每日數據並滾動它週報:問題與to.weekly參數drop.time

library(xts) 
data(sample_matrix) 
d <- as.xts(sample_matrix) 
index(d) <- index(d)+50 

w1 <- to.weekly(d, drop.time=TRUE) 
head(w1,1) 
         d.Open d.High d.Low d.Close 
2007-01-07 00:00:50 50.03978 50.42188 49.95041 49.99185 

w2 <- to.weekly(d, drop.time=FALSE) 
head(w2,1) 
         d.Open d.High d.Low d.Close 
2007-01-07 00:00:50 50.03978 50.42188 49.95041 49.99185 

文檔說:

設置drop.time爲TRUE(默認值)將轉換成一個系列那 包括一個只有日期索引的時間分量,因爲在較低頻率序列中時間索引通常沒有什麼價值。

This question提到drop.time取決於indexClass(d)[1] == 'POSIXt'但似乎沒有幫助:

indexClass(d) 
[1] "POSIXct" "POSIXt" 

indexClass(d) <- c('POSIXt', 'POSIXct') 
w3 <- to.weekly(d, drop.time=TRUE, name=NULL) 
head(w3,1) 
         Open  High  Low Close 
2007-01-07 00:00:50 50.03978 50.42188 49.95041 49.99185 

我敢肯定,我可以截斷關閉的時間成分,但也很好奇我在做什麼錯。

+0

看起來可能是'xts :::。drop.time'中的一個錯誤。我正在調查。 – 2012-03-26 20:37:39

回答

1

這已在r中修復。 xts:::.drop.time正在尋找在類屬性的第一個位置的虛擬POSIXt類,但(在某個點)POSIXctPOSIXt類的順序已在基礎R中切換。我嘗試使此檢查對未來更改變得更加健壯。

我也叫xts:::.drop.time實際上改變了底層索引。它一直在設置indexClass(x) <- "Date",但相關指數仍然是原始的POSIXt倍(包括日內的組件)。這會導致時髦的合併。

library(xts) 
data(sample_matrix) 
d1 <- d2 <- as.xts(sample_matrix) 
index(d1) <- index(d1)+50 
D1 <- to.daily(d1) 
D2 <- to.daily(d2) 
head(merge(D1,D2),2) # old behavior 
      d1.Open d1.High d1.Low d1.Close d2.Open d2.High d2.Low d2.Close 
2007-01-02  NA  NA  NA  NA 50.03978 50.11778 49.95041 50.11778 
2007-01-02 50.03978 50.11778 49.95041 50.11778  NA  NA  NA  NA 
head(merge(D1,D2),1) # new behavior 
      d1.Open d1.High d1.Low d1.Close d2.Open d2.High d2.Low d2.Close 
2007-01-02 50.03978 50.11778 49.95041 50.11778 50.03978 50.11778 49.95041 50.11778 

感謝您的報告和示例!

+0

感謝您的支持和傑出的工具。 Sorta抱歉,這竟然是一個錯誤報告。 – khoxsey 2012-04-04 22:46:08

+0

@khoxsey:別對不起。用戶反饋有助於創建更好的軟件 – 2012-04-04 22:48:27