如何解决rbind.zoo(...) 的问题:滞后函数中的索引重叠
rbind.zoo(...) 中的错误:索引重叠 警告:在 zoo(rval[i],index(x)[i]) 中: 如果“order.by”中的索引条目不唯一,“zoo”对象的某些方法将不起作用
t1<-c("21.04.2019 20:00:00","21.04.2019 20:01:00","21.04.2019 20:02:00","21.04.2019 20:03:00","21.04.2019 20:04:00","21.04.2019 20:05:00","21.04.2019 20:06:00","21.04.2019 20:07:00","21.04.2019 20:08:00","21.04.2019 20:09:00","21.04.2019 20:10:00","21.04.2019 20:11:00")
v1<-c(15,15,14,14)
z1<-zoo(v1,as.POSIXct(strptime((t1),"%d.%m.%Y %H:%M:%s")))
head(lag(z1[,1],2))
使用 k=1 可以无延迟地返回原始时间(并且没有错误和警告)
解决方法
有几个问题:
-
也许 dplyr 已加载。它从 R 的基础中破坏了
lag
,因此没有其他包可以使用它。当您加载 dplyr 时,请这样做:library(dplyr,exclude = c("lag","filter"))
如果您需要使用 dplyr 的
lag
则将其称为dplyr::lag
。虽然以上可能是处理此问题以避免错误的最佳方法,但如果您已经加载了 dplyr 以至于为时已晚,您可以:- 分离它,
detach("package:dplyr",unload = TRUE)
,或 - 使用
stats::lag
来引用基 R 中的lag
泛型,它反过来会调度lag.zoo
,因为 zoo 与其一致工作或 - 输入
lag <- stats::lag
,然后像往常一样使用lag
,如果您需要该版本,请使用dplyr::lag
。
- 分离它,
-
z1 是矢量动物园对象,而不是矩阵动物园对象,因此引用其第一列实际上没有意义。它没有列。省略
[,1]
. -
你可能是说 -2,而不是 +2。 zoo 使用与 R 本身相同的约定,即滞后 2 是指将索引而不是数据滞后 2。也就是说,滞后 2 的系列更早开始,而您可能希望它更晚开始。有关这方面的更多信息,请参阅
?stats::lag
。例如,在下面的负滞后中,第 1 个滞后在一个位置后开始,第 2 个滞后在 2 个位置后开始。stats::lag(z1,-(0:2)) ## lag0 lag-1 lag-2 ## 2019-04-21 20:00:00 15 NA NA ## 2019-04-21 20:01:00 15 15 NA ## 2019-04-21 20:02:00 15 15 15 ## 2019-04-21 20:03:00 14 15 15 ## 2019-04-21 20:04:00 15 14 15 ## 2019-04-21 20:05:00 14 15 14 ## 2019-04-21 20:06:00 15 14 15 ## 2019-04-21 20:07:00 14 15 14 ## 2019-04-21 20:08:00 15 14 15 ## 2019-04-21 20:09:00 15 15 14 ## 2019-04-21 20:10:00 15 15 15 ## 2019-04-21 20:11:00 14 15 15
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。