【问题标题】:Extract previous day observation from xts object in R从 R 中的 xts 对象中提取前一天的观察结果
【发布时间】:2016-03-18 11:57:18
【问题描述】:

我有三天的时间序列数据,格式为xts 对象。虚拟数据生成为:

library(xts)
Sys.setenv(TZ="Asia/Kolkata")
seq <- timeBasedSeq('2015-06-01/2015-06-03 23')
z <- xts(1:length(seq),seq)

现在,使用任何第三天观察的索引,我想同时提取前一天的观察。因此,我将其编码为

a <- z[50]  # Any observation of third day will suffice
b <- as.Date(index(a), tz ="Asia/Kolkata")-1  #previous day date
z[.indexDate(z) %in% b & .indexhour(z) %in% .indexhour(a)] 

最后一条命令的结果

                    [,1]
2015-06-03 01:00:00   50

但是,它应该导致

                    [,1]
2015-06-02 01:00:00   26

谁能指出我做错了什么?

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    问题在于.indexDate 被定义为.index(x) %/% 86400L,而.index 返回自UTC 起源以来的秒数。正如您在构造 b 时所做的那样,在转换为 Date 时需要考虑时区:

    d <- as.Date(index(z), tz ="Asia/Kolkata")
    z[d %in% b & .indexhour(z) %in% .indexhour(a)]
    #                     [,1]
    # 2015-06-02 01:00:00   26
    

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 2020-09-05
      • 2018-04-23
      • 2020-06-03
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多