【问题标题】:How to subset xts by Date sequence that considers business days如何按考虑工作日的日期序列对 xts 进行子集化
【发布时间】:2016-12-27 22:39:39
【问题描述】:

我正在使用 as.Date 序列对 xts 对象进行子集化:

library("quantmod")

getSymbols("AAPL",from="2003-01-01")
# indx sequence
indx <- seq(as.Date('2003-03-31'), length.out=200, by='4 weeks')

SELECT <- AAPL[paste(indx)]

如果您查看SELECT 中的最后两行,我发现它从2016-06-06 跳转到2016-08-01,这不是4 周。它缺少2016-07-04,但由于那不是工作日,它会跳过它。如果indx 不是工作日,我如何返回将返回下一个可用工作日的SELECT?在这个例子中它应该返回2016-07-05...

【问题讨论】:

    标签: r date subset xts


    【解决方案1】:

    工作日,我猜你是指AAPL 的交易日,在这种情况下,你的工作日实际上是 AAPL 证券的时间指数。

    使用事实日期可以递增 1 的第一原则类方法:

    indx <- seq(as.Date('2003-03-31'), length.out=200, by='4 weeks')
    indx <- indx[indx < as.Date(end(AAPL))]
    while(!all(indx %in% as.Date(index(AAPL)))) {
        # You ask for the next available business day:
        indx[!indx %in% as.Date(index(AAPL))] <- indx[!indx %in% as.Date(index(AAPL))] + 1
        # Careful that the last indx value does not go past as.Date(end(AAPL))
        if (indx[length(indx)] > as.Date(end(AAPL))) {
            indx[length(indx)] <- as.Date(end(AAPL))
        }
    }
    
    SELECT <- AAPL[indx]
    tail(SELECT)
    # AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
    # 2016-03-14    101.91    102.91   101.78     102.52    25076100     101.35055
    # 2016-04-11    108.97    110.61   108.83     109.02    29407500     107.77640
    # 2016-05-09     93.00     93.77    92.59      92.79    32936400      92.29005
    # 2016-06-06     97.99    101.89    97.55      98.63    23292500      98.09858
    # 2016-07-05     95.39     95.40    94.46      94.99    27705200      94.47819
    # 2016-08-01    104.41    106.15   104.41     106.05    38167900     105.47860
    

    您还可以通过timeDate 包找到解决方案,这些解决方案更普遍地用于业务日期类型子集。例如http://stackoverflow.com/questions/13673895/r-time-series-data-daily-only-working-days

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 2017-11-14
      • 2017-07-25
      • 2017-09-06
      • 2023-03-31
      • 2012-02-23
      • 1970-01-01
      • 2020-02-03
      • 2015-12-26
      相关资源
      最近更新 更多