我的数据在列中。我需要扫描每3行并输出最大值。这是一种移动平均技术,但我不希望数据被平均。最大值是我的主要关注点。
例如29.66,29.59,30.05 =最大值是30.05
然后移至29.59,29.59,30.05 =最大值为30.05
如何在R软件中做到这一点?
29.66
29.59
30.05
29.59
29.59
30.05
29.59
29.92
30.26
30.18
30.47
答案 0 :(得分:3)
包rollapply
中的函数zoo
应该可以解决问题:
library(zoo)
values = c(29.66, 29.59, 30.05, 29.59, 29.59, 30.05, 29.59, 29.92, 30.26, 30.18, 30.47)
rollmax(values, k=3)
# or
rollapply(values, 3, max)
# [1] 30.05 30.05 30.05 30.05 30.05 30.05 30.26 30.26 30.47
答案 1 :(得分:2)
请参阅动物园套餐中的rollapply
:rollapply(x, 3, max)