r语言 - 使用 rollapply 来处理时间窗口 -- 不固定的样本窗口用于不规则的时间序列



我正在尝试计算时间窗口(想想 20 秒(的各种统计数据,以获取各种信号,这些信号可能会也可能不会在每个样本窗口中记录。此外,采样间隔不是规则的 - 可能是 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

(我不需要 NA - 只是想把例子说清楚。尝试:

rollapply( z, 3, max)
 1  2  4  5  6  9 
 2  4  4  4  8 10 

不是我要找的! 考虑 t[3] 处的滚动应用结果。 这应该是 2 而不是 4,因为 3s 处不存在的测量值在窗口中,但 4s 处的现有测量值不是。 它"看起来"结果只是发生了变化,但你可以玩弄其他数字并意识到这是完全错误的。

我是动物园的菜鸟,但在信号处理方面相当有经验。 似乎不能完全得到这个来做我需要的。

提前谢谢。

使用网格g在缺失点处用 NA 填充系列,然后使用 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 

最新更新