【发布时间】:2015-12-01 03:38:07
【问题描述】:
我在 xts 对象中有每日收盘价。我想做的是获得本周的最后收盘价。大部分时间是星期五,但有时可能是星期四,甚至更罕见的是星期三。
我一直在尝试使用找到的解决方案 here 对其进行子集化,但没有运气。有没有人看到或找到解决这个问题的方法。
提前致谢。
【问题讨论】:
-
请提供一个可重现的例子。
我在 xts 对象中有每日收盘价。我想做的是获得本周的最后收盘价。大部分时间是星期五,但有时可能是星期四,甚至更罕见的是星期三。
我一直在尝试使用找到的解决方案 here 对其进行子集化,但没有运气。有没有人看到或找到解决这个问题的方法。
提前致谢。
【问题讨论】:
使用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
【讨论】:
如果你的数据只包含工作日(没有周末),那么你可以使用这个:
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))
【讨论】: