我想每周在 R
分割 xts/zoo
时间序列 . 时区设置为"Asia/Kolkata"
Sys.setenv(TZ="Asia/Kolkata")
library(xts)
seqs<- seq(as.POSIXct("2016-01-01"),as.POSIXct("2016-01-30"), by = "30 mins")
ob<- xts(data.frame(value=1:(length(seqs))),seqs)
weekdata <- split(ob,f="weeks",k=1)
这个 split
的问题是每周数据偏移5:30小时,如下所示
> head(weekdata[[2]],2)
value
2016-01-04 05:30:00 156
2016-01-04 06:00:00 157
> head(weekdata[[3]],2)
value
2016-01-11 05:30:00 492
2016-01-11 06:00:00 493
我知道这是由于时区(亚洲/加尔各答的5:30) . 我也相信这可以通过使用 endpoints
函数来调整,但我觉得难以修复 . 任何人都可以提供一些指示吗?
2 回答
因此,如果我理解正确,您所需的输出是xts列表,其中每个元素都有一周的数据 . 你可以这样做:
你的代码非常好,你只需要在你上面的代码中的第3行添加一个时区参数("UTC"或“GMT”,这是等价的),你不必更改时区环境变量,这总是很危险的 . 你忘记重置变量的情况 . 无需从
df
到xts
等进行转换如果您当前的时区不是“UTC”,您将收到警告,让您意识到这一事实 .