はじめに
Notion Formula の第38回目は、「上下の外れ値を除いた平均値(trimmean)を計算するには?」を解説します。文字列が続いたので、今回はリストに関する話題です。ここで説明しています。
数式
ここでは、リレーション先の「点数」プロパティの trimmean を計算してみます。こちらも長いので少しずつ紹介してみます。
/* 子一覧のリレーションページから点数をマッピング */ prop("子一覧").map(current.prop("点数")) /* 並び替え */ .sort() /* 先頭と末尾を取り除く */ .slice(1, -1) /* 作成した配列の合計を個数で除算 */ .mean()
最初に map で数値のリストが生成されます。その後、sort で並び替えをします。slice で 1 から -1 まで切り出すことで、0 番目と最後の要素が削られます。その後、先日追加された mean で平均をとります。mean ができるまでは、let で削った要素のリストを mid という変数に代入し、総和を個数で割り算する作業をしてました。mean のおかげで let が必要なくなりました。
| map | sort | slice | answer |
|---|---|---|---|
| 80,90,70,100,30 | 30,70,80,90,100 | 70,80,90 | 80 |
| 90,86,77,10,99 | 10,77,86,90,99 | 77,86,90 | 84.33333333333333 |
| 100,80,10 | 10,80,100 | 80 | 80 |
| 80,90 | 80,90 | ||
| 80 | 80 | ||
おわりに
今回は「上下の外れ値を除いた平均値(trimmean)を計算するには?」を解説しました。並び替え後に先頭と末尾を取り除くことで、trimmean が実現できるようになりました。