我尝试使用R来计算矩阵中一系列值的移动平均值。不过,普通的R邮件列表搜索并不是很有帮助。在R中似乎没有built-in function可以让我计算移动平均线。有没有包提供这样的功能呢?或者我需要写我自己的?
发布于 2011-02-01 20:06:50
或者你可以简单地使用filter来计算它,下面是我使用的函数:
ma <- function(x, n = 5){filter(x, rep(1 / n, n), sides = 2)}
如果使用dplyr
,请注意在上面的函数中指定stats::filter
。
发布于 2013-08-22 01:11:54
caTools
软件包具有非常快的滚动平均值/最小/最大/标准差和很少的其他功能。我只使用过runmean
和runsd
,它们是迄今为止提到的所有其他包中速度最快的。
发布于 2015-01-16 22:49:35
对于用C++编写的非常快速的移动平均值,您可以使用RcppRoll
。只需调用roll_mean
函数。文档可以在here上找到。
否则,这个(较慢的) for循环应该可以完成此任务:
ma <- function(arr, n=15){
res = arr
for(i in n:length(arr)){
res[i] = mean(arr[(i-n):i])
}
res
}
https://stackoverflow.com/questions/743812
复制相似问题