1

我正在尝试为可能会或可能不会在每个样本窗口记录的各种信号计算时间窗口(想想 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] 处的 rollapply 结果。这应该是 2 而不是 4,因为 3 秒时不存在的测量值在窗口中,但 4 秒时的现有测量值不是。它“看起来”像结果只是改变了,但你可以玩弄其他数字并意识到这完全是错误的。

我是动物园的菜鸟,但在信号处理方面经验丰富。似乎不能让它做我需要的。

提前致谢。

4

1 回答 1

1

使用网格在缺失点处用 NA 填充系列,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 
于 2014-12-04T13:11:00.333 回答