从 R 中的 xts 对象中提取前一天的观察结果
Extract previous day observation from xts object in R
我有三天的时间序列数据,格式为 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
谁能指出我哪里做错了?
问题是 .indexDate
被定义为 .index(x) %/% 86400L
,而 .index
returns 是从 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
我有三天的时间序列数据,格式为 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
谁能指出我哪里做错了?
问题是 .indexDate
被定义为 .index(x) %/% 86400L
,而 .index
returns 是从 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