从R中的xts对象中提取前一天的观察结果

时间:2016-03-18 11:57:18

标签: r time-series xts

我有三天的时间序列数据,格式为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

任何人都可以指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

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

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