数字を特定の範囲にマッピングする方法

スポンサーリンク

はじめに

先日、ある範囲の数値を0から100の範囲に置き換えたい作業がありました。わかりやすい例でいうと以下の通りです。

数値の範囲:0 ~ 10
指定した数値:2

数値の範囲が-50~50になると指定した「2」はいくつになるか?答えは「-30」です。管理人は箱をイメージして答えを出したのですが、計算式は?となると「・・・」となってしまいました。

使う機会は少ないでしょうが、知っておくと何かの役に立つことがあるかもしれないので手順をまとめておきます。

手順

変換前のリスト

0.0094
0.0146
0.0089
0.0135
0.0122
0.0072
0.0005
-0.0031
-0.0009
-0.0024
-0.0042
0.0006
0.0036
0.0069
0.0096
0.0184
0.0213
0.0236
0.0234
0.0285
0.0331

計算式

変換前のリストを0~100の範囲に置き換えます。マッピングし直していきます。

変換後の最小値+(変換後の最大値-変換後の最小値)*((指定した数値-変換前の最小値)/(変換前の最大値-変換前の最小値))

冒頭の例を当てはめてみます。
=-50+(50-(-50))*((2-0)/(10-0))
=-50+100*(2/10)
=-50+20
=-30

結果

実データで計算した結果です。

変換前変換後
0.009436.46113
0.014650.40214
0.008935.12064
0.013547.45308
0.012243.96783
0.007230.563
0.000512.60054
-0.00312.949062
-0.00098.847185
-0.00244.825737
-0.00420
0.000612.86863
0.003620.91153
0.006929.75871
0.009636.99732
0.018460.58981
0.021368.36461
0.023674.53083
0.023473.99464
0.028587.66756
0.0331100

コメント