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
如果您的数据包含周末,那么您需要在执行 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))
使用 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
我在 xts 对象中有每日收盘价。我想要做的是获得本周的最后收盘价。大部分时间是周五,但有时可能是周四,甚至更罕见的是周三。
我一直在尝试使用 here 找到的解决方案对其进行子集化,但没有成功。有没有人看到或找到解决此问题的方法。
提前致谢。
如果您的数据只包含工作日(没有周末),那么您可以使用:
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))
使用 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