問題
采集到一組數據后,用Excel/WPS表格處理。考慮到數據有波動,想去掉最大最小的K個數后,再計算剩下數據的平均數和標准差。
如果是計算去掉最大最小數的平均值,那么很容易想到用SUM
對所有數據求和,再減去MAX
和MIN
,最后除以總數-2即可。不過計算標准差則不那么容易了。如果考慮最大最小K個數的情況也復雜一點。
有人提到可以先排序再計算。對於單獨一組數據確實可以。但是很多情況下,不方便改變數據排列順序,而且對一組數據的處理可能影響其他數據。所以不是一個完美的解決方法。
方法
以下方法參考了這個問題和第一個回答:https://zhidao.baidu.com/question/358119912.html
用到的函數有:
- AVERAGE:計算平均數
- STDEV:計算標准差
- LARGE:返回一組數中的第N大的數
- ROW:返回一個引用的行號
假設數據存放的位置是:A1 - A100
計算去掉最大最小K個數后的平均數:=AVERAGE(LARGE(A1:A100, ROW($(K+1):$(100-K)))
計算去掉最大最小K個數后的標准差:=STDEV(LARGE(A1:A100, ROW($(K+1):$(100-K)))
假設 K=2,那么上述函數就寫為:
=AVERAGE(LARGE(A1:A100, ROW($3:$98)))
=STDEV(LARGE(A1:A100, ROW($3:$98)))
解釋:
假設 K=2,那么ROW($(K+1):$(100-K))
會返回一個 3 ~ 98 的序列引用;傳遞給LARGE
函數后,會返回第3~98大的數的序列,並傳遞給AVERAGE
或者STDEV
。這樣就可以計算去掉最大最小K個數的平均值和標准差了。
舉例
下面有10個數據,去掉最大最小值后,求剩余數據的平均數和標准差。