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

时间:2015-09-04 22:01:32

标签: r subset xts

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

我一直试图通过找到here的解决方案对其进行子集化,但没有运气。有没有人见过或找到解决这个问题的方法。

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用to.weekly将时间序列转换为每周OHLC。每周收盘价应该是本周的最后一个交易日 - 无论是周四还是周三。

例如,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

答案 1 :(得分:1)

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

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