首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算移动平均值

计算移动平均值
EN

Stack Overflow用户
提问于 2009-04-13 20:52:52
回答 12查看 293.2K关注 0票数 220

我尝试使用R来计算矩阵中一系列值的移动平均值。不过,普通的R邮件列表搜索并不是很有帮助。在R中似乎没有built-in function可以让我计算移动平均线。有没有包提供这样的功能呢?或者我需要写我自己的?

EN

回答 12

Stack Overflow用户

发布于 2011-02-01 20:06:50

或者你可以简单地使用filter来计算它,下面是我使用的函数:

代码语言:javascript
复制
ma <- function(x, n = 5){filter(x, rep(1 / n, n), sides = 2)}

如果使用dplyr,请注意在上面的函数中指定stats::filter

票数 235
EN

Stack Overflow用户

发布于 2013-08-22 01:11:54

caTools软件包具有非常快的滚动平均值/最小/最大/标准差和很少的其他功能。我只使用过runmeanrunsd,它们是迄今为止提到的所有其他包中速度最快的。

票数 12
EN

Stack Overflow用户

发布于 2015-01-16 22:49:35

对于用C++编写的非常快速的移动平均值,您可以使用RcppRoll。只需调用roll_mean函数。文档可以在here上找到。

否则,这个(较慢的) for循环应该可以完成此任务:

代码语言:javascript
复制
ma <- function(arr, n=15){
  res = arr
  for(i in n:length(arr)){
    res[i] = mean(arr[(i-n):i])
  }
  res
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/743812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档