【问题标题】:R xts Time series, subset by last workday of the weekR xts 时间序列,每周最后一个工作日的子集
【发布时间】:2015-12-01 03:38:07
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • 请提供一个可重现的例子。

标签: r subset xts


【解决方案1】:

使用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

【讨论】:

  • 太棒了!我喜欢这个网站!感谢您的帮助
  • @AaronSoderstrom 太棒了!如果他们都为您工作,请随意接受任何一个答案。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2014-04-30
    • 2014-07-16
    • 2013-04-20
    相关资源
    最近更新 更多