r - rbind.zoo(...) 的问题:索引在滞后函数中重叠
问题描述
我在使用 lag.zoo 函数时遇到了动物园错误问题
rbind.zoo(...) 中的错误:索引重叠警告:在 zoo(rval[i], index(x)[i]) 中:如果索引条目按 'order. by' 不是唯一的
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,15,14,15,14,15,14,15,15,15,14)
z1<-zoo(v1, as.POSIXct(strptime((t1), "%d.%m.%Y %H:%M:%S")))
head(lag(z1[,1], 2))
使用 k=1 可以无延迟地返回原始时间(并且没有错误和警告)
解决方案
有几个问题:
也许 dplyr 已加载。它破坏
lag
了 R 的基础,因此没有其他软件包可以使用它。当你加载 dplyr 时,这样做:library(dplyr, exclude = c("lag", "filter"))
如果您需要使用 dplyr
lag
,请将其称为dplyr::lag
. 尽管上面可能是处理此问题以避免错误的最佳方法,但如果您已经加载了 dplyr 以致为时已晚,您可以:- 分离它,
detach("package:dplyr", unload = TRUE)
, 或 - 用于
stats::lag
引用lag
基础 R 中的泛型,这反过来将调度lag.zoo
,因为 zoo 与它一致地工作,或者 - 输入
lag <- stats::lag
然后lag
照常使用dplyr::lag
,如果需要该版本,请使用。
- 分离它,
z1 是矢量动物园对象,而不是矩阵动物园对象,因此引用它的第一列实际上没有意义。它没有列。省略
[, 1]
.您可能的意思是-2,而不是+2。zoo 使用与 R 本身相同的约定,即滞后 2 是指滞后索引而不是数据 2。也就是说,滞后 2 的系列开始较早,而您可能希望它稍后开始。有关
?stats::lag
更多信息,请参阅。例如,在下面的负滞后下,第一个滞后开始晚一个位置,第二个滞后开始两个位置。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
推荐阅读
- node.js - 无法在 Centos7 容器中公开 node express 应用程序的端口
- go - 具有“有一个”关联的查询(一对一)
- node.js - 在 3 个不同的 pod 中运行应用程序的 3 个组件
- git - git checkout & git pull : 执行时避免中间文件更改
- javascript - 服务工作者在服务器启动后不重新加载页面就无法工作
- javascript - 如何让 API 抽象层代码更干净
- npm - 如何在 gulp @4 中“浏览器同步 + LiveReload + 观看”
- sql-server - 计算运行总计
- inno-setup - UninstallRun 中的检查参数功能无法正常工作
- ansible - 稳定 | 提取线的一部分