2016-08-04 34 views
0

xts中進行期間聚合時,如何指定哪些列構成OHLCV?另外,它正在丟失我原始數據(「窗口」)中的一列。如何在xts :: to.period中指定OHLCV列名?

也許有一種方法提供自己的聚合功能to.period - 會感激有用的指針。

> head(to.period(spy,period="minutes",k=5, indexAt="startof"),5) 
        spy.Open spy.High spy.Low spy.Close spy.Volume 
2016-05-19 06:30:00  60 204.20 204.09 204.02  537530 
2016-05-19 06:35:00  60 204.32 204.16 204.23  482436 
2016-05-19 06:40:00  60 204.50 204.38 204.39  441800 
2016-05-19 06:45:00  60 204.53 204.31 204.20  579161 
2016-05-19 06:50:00  60 204.20 203.86 203.72  849998 

> head(spy,10) 
        window open high  low close volume 
2016-05-19 06:30:00  60 204.030 204.09 203.900 203.91 144840 
2016-05-19 06:31:00  60 203.900 204.20 203.900 204.20 94846 
2016-05-19 06:32:00  60 204.200 204.23 204.110 204.19 68895 
2016-05-19 06:33:00  60 204.180 204.30 204.160 204.18 110701 
2016-05-19 06:34:00  60 204.160 204.16 204.020 204.10 118248 
2016-05-19 06:35:00  60 204.100 204.16 204.010 204.06 78303 
2016-05-19 06:36:00  60 204.060 204.20 204.040 204.19 67314 
2016-05-19 06:37:00  60 204.200 204.33 204.140 204.33 147779 
2016-05-19 06:38:00  60 204.320 204.33 204.130 204.27 109549 
2016-05-19 06:39:00  60 204.270 204.34 204.230 204.24 79491 
+0

'to.period'需要一個單變量或OHLC類型的時間序列對象。在應用此功能之前,您必須刪除'window'列。 – hvollmeier

回答

2

功能OHLCV和/或包裝OHLCquantmod可以幫您迅速地選擇正確的列:

library(quantmod) 
getSymbols("SPY") 
# Something like your data: 
SPY <- cbind(window = 60, SPY) 

# Now correctly select the OHLCV columns: 
SPY <- to.period(OHLCV(SPY), period = "months") 

tail(SPY) 
# OHLCV(SPY).Open OHLCV(SPY).High OHLCV(SPY).Low OHLCV(SPY).Close OHLCV(SPY).Volume 
# 2016-03-31   195.01   206.87   194.45   205.52  2323306500 
# 2016-04-29   204.35   210.92   203.09   206.33  1910635600 
# 2016-05-31   206.92   210.69   202.78   209.84  1831962200 
# 2016-06-30   209.12   212.52   198.65   209.48  2612406900 
# 2016-07-29   209.48   217.54   207.06   217.12  1648453700 
# 2016-08-04   217.19   217.65   214.25   216.41   264076600 

# You might want to use the `name` argument to create syntactically valid names 
SPY <- to.period(OHLCV(SPY), period = "months", name = "SPY") 
tail(SPY) 
#   SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume 
# 2016-03-31 195.01 206.87 194.45 205.52 2323306500 
# 2016-04-29 204.35 210.92 203.09 206.33 1910635600 
# 2016-05-31 206.92 210.69 202.78 209.84 1831962200 
# 2016-06-30 209.12 212.52 198.65 209.48 2612406900 
# 2016-07-29 209.48 217.54 207.06 217.12 1648453700 
# 2016-08-05 217.19 218.23 214.25 218.18 335650500 

小心具有多列,其中包括在標籤中的「打開」,「高「等,因爲OHLC可能會返回超過4列。它可能會更安全,明確重新標記您的OHLC列像「打開」,「高」,「低」,「關閉」,並做明顯的列選擇(但更長的時間來輸入)

to.period(SPY[, c("Open", "High", "Low", "Close")], period = "months") 

爲見?period.apply有關如何使用自己的自定義聚合功能的示例。