2015-09-04 36 views
1

我有一個xts對象的每日收盤價。我想要做的是獲得本週的最後收盤價。大多數時候這將是星期五,但有時這可能是星期四或甚至更罕見的星期三。R xts時間系列,本週最後一個工作日的子集

我一直在試圖找到解決方案子集here但沒有運氣。有沒有人看到或找到了解決方案。

在此先感謝。

+0

請提供一個可重現的例子。 – LyzandeR

回答

1

將時間序列轉換爲每週OHLC與to.weekly。每週收盤價應該是本週的最後一個交易日 - 無論是週四還是週三。

例如,2014年7月4日(美國假期)在星期五,所以當天沒有交易。以下代碼返回6/27(星期五),7/3(星期四關閉)和7/11(星期五)的觀察值。

getSymbols("SPY") 
Cl(to.weekly(SPY))['2014-06-27/2014-07-11'] 
#   SPY.Close 
# 2014-06-27 195.82 
# 2014-07-03 198.20 
# 2014-07-11 196.61 
+0

真棒!我喜歡這個網站!感謝您的幫助 –

+1

@AaronSoderstrom太棒了!如果他們都爲你工作,請隨時接受答案。 –

0

如果您的數據僅包含工作日(沒有周末),那麼你可以使用這個:

require(quantmod) 
getSymbols("SPY") 
spy <- do.call(rbind, lapply(split(SPY, "weeks"), last)) 
table(weekdays(index(spy))) 
# Friday Thursday 
#  436  17 

如果數據中包含的週末,那麼你需要做的splitlapplyrbind之前將其刪除。

data(sample_matrix) 
x <- as.xts(sample_matrix) 
x <- x[.indexwday(x) %in% 1:5] 
y <- do.call(rbind, lapply(split(x, "weeks"), last)) 
+0

這也工作,謝謝! –