R滚动功能错误“;错误:不支持将矩阵或数组用于列索引;

R滚动功能错误“;错误:不支持将矩阵或数组用于列索引;,r,R,我想通过时间窗口(例如,3天)而不是 通过观察次数(例如,当这些观察间隔不相等时) 我有一列(“检查”),日期格式为“YYYY-mm-dd H:m:s”,但间距不相等 check 2012-01-01 21:05:00 2012-01-01 21:09:00 2012-01-01 22:57:00 2012-01-01 23:21:00 2012-01-02 04:26:00 2012-01-02 04:43:00 2012-01-02 05:06:00 2012-01-02 05:28:00

我想通过时间窗口(例如,3天)而不是 通过观察次数(例如,当这些观察间隔不相等时)

我有一列(“检查”),日期格式为“YYYY-mm-dd H:m:s”,但间距不相等

check
2012-01-01 21:05:00
2012-01-01 21:09:00
2012-01-01 22:57:00
2012-01-01 23:21:00
2012-01-02 04:26:00
2012-01-02 04:43:00
2012-01-02 05:06:00
2012-01-02 05:28:00
此列有146481行。 我正在尝试使用帮助部分中建议的以下代码

check <- unique(check);
View(check);
z <- zoo(seq_along(check), check);

这是在将数据减少到10行之后。

这里是
dput(check)
输出的最后几行<代码>1241842560、1241848500、1241848860、1242023400、1242024300、1257757200、1257757680、1260526320、1260526560、1291736040、1291737360、1453979640、1468846800),class=c(“POSIXct”、“POSIXt”),tzone=“UTC”),.name=“event_time”,row.Names=c(NA,-146481L),class=c(“tbl_-df”、“tbl”、“data.frame”)。抱歉。我刚刚在问题(上面)中添加了命令dput(check)的结果。
check
是nx1,所以
seq_-along(check)
是标量1,它不是您想要的。毫无疑问,无论您使用什么源,都是使用向量时间序列,而不是nx1序列。还要注意的是,你正在做的事情会在范围内每分钟创建一行,因此它可能会变得非常大,这可能没问题,也可能没问题。是的,你是对的。按分钟创建数据将生成大量的行,我想先看看它能把我带到哪里。在开始的时候,我有一个时间序列,其中有一列记录了每个事件的发生时间,我将该列隔离并称之为“检查”。我首先尝试计算每条线(即在每个事件中)的其他列的平均值,例如过去10天的电压。我有错误消息,正是通过尝试修复它们,我才被驱动到这个“rollapply”的示例中。其他问题是,没有任何可采用的平均值(check有一个时间索引,但没有数据值),代码试图采用超过1440点的滚动平均值,但是check;s长度为10。以下是
dput(check)
输出的最后几行<代码>1241842560、1241848500、1241848860、1242023400、1242024300、1257757200、1257757680、1260526320、1260526560、1291736040、1291737360、1453979640、1468846800),class=c(“POSIXct”、“POSIXt”),tzone=“UTC”),.name=“event_time”,row.Names=c(NA,-146481L),class=c(“tbl_-df”、“tbl”、“data.frame”)。抱歉。我刚刚在问题(上面)中添加了命令dput(check)的结果。
check
是nx1,所以
seq_-along(check)
是标量1,它不是您想要的。毫无疑问,无论您使用什么源,都是使用向量时间序列,而不是nx1序列。还要注意的是,你正在做的事情会在范围内每分钟创建一行,因此它可能会变得非常大,这可能没问题,也可能没问题。是的,你是对的。按分钟创建数据将生成大量的行,我想先看看它能把我带到哪里。在开始的时候,我有一个时间序列,其中有一列记录了每个事件的发生时间,我将该列隔离并称之为“检查”。我首先尝试计算每条线(即在每个事件中)的其他列的平均值,例如过去10天的电压。我有错误消息,正是通过尝试修复它们,我才被驱动到这个“rollapply”的示例中。其他问题是,没有任何可采用的平均值(check有一个时间索引,但没有数据值),代码试图采用超过1440点的滚动平均值,但是check;s的长度是10。
check <- unique(check);
View(check);
z <- zoo(seq_along(check), check);
g <- zoo(, seq(start(z), end(z), "min"))
zm <- merge(z, g)
## - 3-day rolling mean
rollapply(zm, 1440, mean, na.rm = TRUE, fill = NA)
structure(list(event_time = structure(c(1325451900, 1325452140, 
1325458620, 1325460060, 1325478360, 1325479380, 1325480760, 1325482080, 
1325482920, 1325483580), class = c("POSIXct", "POSIXt"), tzone = "UTC")), .Names = "event_time", row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))