2011-12-16 64 views
1

我的数据在列中。我需要扫描每3行,并出现最大值。这是一种移动平均技术,但我不希望数据被平均。最大值是我最关心的问题。 e.g 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 

回答

2

rollapply动物园包:rollapply(x, 3, max)

3

在包zoo功能rollapply应该做的伎俩:

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 
+0

非常感谢香港和马特!但是...我收到了错误信息。错误在UseMethod(“rollapply”): 没有适用于'rollapply'的方法适用于类“c('double','数字')” – Eddie

+0

嗨亚马逊......对不起。我知道了!更新我的动物园包,一切都很好。非常感谢好友。 – Eddie

+0

另请注意'rollmax'。 –