我有一个包含 A 列和 B 列的数据框,如下所示。我想计算滑动窗口中 B 列中值的平均值。滑动窗口大小不是恒定的,应根据 A 列设置。即窗口大小在 A 列中设置为 200 的值限制。下面的示例对窗口大小进行了清晰的描述:
A: 10 150 200 220 300 350 400 410 500
B: 0 0 0 1 0 1 1 1 0 mean
[0 0 0] 0
[0 0 1 0 1] 0.4
[0 1 0 1 1] 0.6
[1 0 1 1 1] 0.8
[0 1 1 1 0] 0.6
[1 1 1 0] 0.75
[1 1 0] 0.66
[1 0] 0.5
[0] 0
Output: 0 0.4 0.6 0.8 0.8 0.8 0.8 0.8 0.75
现在,对于 A 列中的每一行/坐标,包含该坐标的所有窗口都被考虑并应保留最高平均值,其给出的结果如“输出”列所示。
我希望有如上所示的输出。输出应该像:
A B Output
10 0 0
150 0 0.4
200 0 0.6
220 1 0.8
300 0 0.8
350 1 0.8
400 1 0.8
410 1 0.8
500 0 0.75
在 R 中的滑动窗口有一个类似的问题和
rollapply(B, 2*k-1, function(x) max(rollmean(x, k)), partial = TRUE)
给出以 k 为窗口大小的解. 不同之处在于窗口大小在当前问题中不是恒定的。
有人可以在 R 中提供任何解决方案吗?