我在xts对象中有每日收盘价。我想要做的是获得本周的最后收盘价。大部分时间都是星期五,但有时这可能是星期四,甚至更罕见星期三。
我一直试图通过找到here的解决方案对其进行子集化,但没有运气。有没有人见过或找到解决这个问题的方法。
提前致谢。
答案 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
如果您的数据包含周末,则需要在执行split
,lapply
,rbind
之前将其删除。
data(sample_matrix)
x <- as.xts(sample_matrix)
x <- x[.indexwday(x) %in% 1:5]
y <- do.call(rbind, lapply(split(x, "weeks"), last))