我正在尝试计算各个信号的各种统计数据(对于每个样本窗口可能记录或可能不记录的各种信号)。此外,采样间隔不规则 - 可能是2或3或4秒。考虑t是实验的经过秒数,d是测量值:
require('zoo')
t<- c( 0, 1, 2, 4, 5, 6, 9, 10 )
d<- c( 2, 2, 2, 4, 4, 4, 8, 10 )
z<- zoo(d, t)
现在,如您所见,在3秒,7秒或8秒没有测量值。我想在3秒钟的窗口中计算类似最大值的东西。理想情况下,我的输出就像
NA, 2, 2, 4, 4, 4, 8, NA
(我不需要NAs - 只是想让这个例子清楚。) 尝试:
rollapply( z, 3, max)
1 2 4 5 6 9
2 4 4 4 8 10
不是我想要的!考虑t [3]处的rollapply结果。这应该是2而不是4,因为3s处不存在的度量是在窗口中,但是4s处的现有测量值不是。它&#34;看起来&#34;比如结果只是转移,但你可以玩其他数字,并意识到它是完全错误的。
我是动物园的菜鸟,但在信号处理方面经验丰富。似乎无法让我做到我需要的东西。
提前致谢。
答案 0 :(得分:1)
使用网格g
在遗漏点填写系列,然后使用rollapplyr
右对齐窗口(rollapply
的默认设置为居中对齐):
library(zoo)
g <- seq(start(z), end(z), 1.0)
zz <- merge(z, zoo(, g))
rollapplyr(zz, 3, max, na.rm = TRUE)
,并提供:
2 3 4 5 6 7 8 9 10
2 2 4 4 4 4 4 8 10