R xts 时间序列,按一周的最后一个工作日划分的子集

R xts Time series, subset by last workday of the week

我在 xts 对象中有每日收盘价。我想要做的是获得本周的最后收盘价。大部分时间是周五,但有时可能是周四,甚至更罕见的是周三。

我一直在尝试使用 here 找到的解决方案对其进行子集化,但没有成功。有没有人看到或找到解决此问题的方法。

提前致谢。

如果您的数据只包含工作日(没有周末),那么您可以使用:

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))

使用 to.weekly 将时间序列转换为每周 OHLC。每周收盘价应该是一周中的最后一个交易日——星期四或星期三。

例如,7/4/2014(美国假期)是星期五,所以那天没有交易。以下代码 returns 观察 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