首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算累积平均值(平均值)

计算累积平均值(平均值)
EN

Stack Overflow用户
提问于 2012-06-18 04:46:16
回答 7查看 59.5K关注 0票数 12

我想知道如何计算一些数字的累积平均值。我将举一个简单的例子来描述我正在寻找的东西。

我有以下数字

代码语言:javascript
复制
vec <- c(1, 2, 3, 4, 5)

如果我计算这些数字的平均值,我会得到3。

现在,如何计算这些数字的累积平均值。

EN

回答 7

Stack Overflow用户

发布于 2013-07-26 21:33:20

与列表的累积和类似,我建议这样:向量x的累积平均值avg将包含从第一个位置到位置i的平均值。

一种方法是计算每个位置的平均值,方法是将所有先前的值相加,然后除以它们的数字。

通过将arithmetic mean的定义重写为递归公式。一个人得到

代码语言:javascript
复制
avg(1) = x(1)

代码语言:javascript
复制
avg(i) = (i-1)/i*avg(i-1) + x(i)/i;    (i > 1)

对向量的每个元素(或列表、一维数组或其他名称)计算此表达式,将得到累积平均值。

如果你必须计算非常大或非常多的整数的平均值,这种递归方法会派上用场,如果你必须存储它们的累加和,就会遇到溢出。

示例

在您的示例中

代码语言:javascript
复制
1, 2, 3, 4, 5

我们会得到

代码语言:javascript
复制
1, 1.5, 2, 2.5, 3
票数 22
EN

Stack Overflow用户

发布于 2017-06-26 21:34:57

这是一个古老的问题,从那以后发生了很多变化。我只是想用一个dplyr answer更新它。dplyr有一个cummean函数,它直接给出向量的累积平均值。

代码语言:javascript
复制
vec <- c(1, 2, 3, 4, 5)
library(dplyr)
cummean(vec)

#[1] 1.0 1.5 2.0 2.5 3.0
票数 9
EN

Stack Overflow用户

发布于 2014-08-09 03:35:05

问题:如何在R中创建累积平均值?答:这个答案是由Jim Holtman jholtman@gmail.com提供的,他使用了cumsum()函数和seq_along()函数,所以请阅读它们。但提供的代码清楚地说明了这一点。6、6+ 16、6+ 16 + 8等等

代码语言:javascript
复制
   x <- sample(1:20)
    x
 # [1]  6 16  8  1 17 11  2 19 18  5 15 13  3 20  9 14  7 10 12  4

    cumsum(x) / seq_along(x)
 # [1]  6.000000 11.000000 10.000000  7.750000  9.600000  9.833333  8.714286
 #10.000000 10.888889 10.300000
 #[11] 10.727273 10.916667 10.307692 11.000000 10.866667 11.062500 10.823529
 #10.777778 10.842105 10.500000
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11074665

复制
相关文章

相似问题

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