30
$\begingroup$

Say I have 100 numbers that are averaged:

number of values = 100 total sum of values = 2000 mean = 2000 / 100 => 20 

If I want to add a value and find out the new average:

total sum of values = 2000 + 100 mean = 2100 / 101 => 20.79 

If I want to subtract a value and find out the new average:

total sum of values = 2100 - 100 mean = 2000 / 100 => 20 

It seems to work, but is the above correct?

Is this the proper way to add/subtract values from a average without having to re-sum all the 100 numbers first?

3 Answers 3

18

To put it programmatically, and since the question was about how to both add and subtract:

Add a value:

average = average + ((value - average) / nValues) 

Subtract a value:

average = (average * nValues - value) / (nValues - 1) 
49

I know that's an old thread but I had the same problem. I want to add a value to an existing average without calculate it back to the total sum.

to add an value to an exisitng average we only must know for how much values the average is calculated: $ average_{new} = average_{old} + \frac{ value_{new} - average_{old}}{size_{new}} $

  • 0
    -1 Careful this formula works only for adding `1` new value! Please work out the correct equation using this answer and you'll see! https://math.stackexchange.com/a/1153800/5035492017-11-16
28

$s=\frac{a_1+...+a_n}{n}$.

If you want the average of $a_1,...,a_n$ and $a_{n+1}$, then $s'=\frac{a_1+...+a_n+a_{n+1}}{n+1}=\frac{ns+a_{n+1}}{n+1} = \frac{(n+1)s+a_{n+1}}{n+1} - \frac{s}{n+1} = s + \frac{a_{n+1}-s}{n+1}$

If you want the average of $a_1,...,a_{n-1}$ then $s''=\frac{a_1+...+a_{n-1}}{n-1}=\frac{ns-a_n}{n-1}$.

  • 0
    This is the working answer. @501's answer doesn't work when increasing `n` by more than 1.2017-11-16