R で 0 と 1 の間の値をスケーリングする方法


次のメソッドを使用して、R の変数の値を 0 と 1 の間でスケーリングできます。

方法 1: R ベースを使用する

 #define function to scale values between 0 and 1
scale_values <- function (x){(x-min(x))/(max(x)-min(x))}

x_scaled <- rescale(x)

方法 2: スケール パッケージを使用する

 library (scales)

x_scaled <- rescale(x)

次の例は、R の次のデータ フレームで各メソッドを実際に使用する方法を示しています。

 #create data frame
df <- data. frame (store=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
                 sales=c(12, 24, 23, 59, 45, 34, 50, 77))

#view data frame
df

  blind sales
1 to 12
2 B 24
3 C 23
4 D 59
5 E 45
6 F 34
7 G 50
8:77 a.m.

例 1: 基数 R を使用して 0 と 1 の間の値をスケールする

次のコードは、ベース R でカスタム関数を定義し、その関数を使用してデータ フレームのsales列の値を 0 と 1 の間でスケーリングする方法を示しています。

 #define function to scale values between 0 and 1
scale_values <- function (x){(x-min(x))/(max(x)-min(x))}

#scale values in 'sales' column to be between 0 and 1
df$sales <- scale_values(df$sales)

#view updated data frame
df

  blind sales
1 A 0.0000000
2 B 0.1846154
3 C 0.1692308
4 D 0.7230769
5 E 0.5076923
6 F 0.3384615
7G 0.5846154
8 H 1.0000000

Sales列の各値が 0 から 1 の間でスケールされるようになりました。

この関数は、次の式を使用して各値をスケールします。

  • スケール値 = (値 – 最小値) / (最大値 – 最小値)

たとえば、店舗 A の売上のスケール値は次のように計算されます。

  • スケーリングされた値 = (12 – 12) / (77 – 12) = 0 / 65 = 0

同様に、店舗 B の売上の現在価値は次のように計算されます。

  • スケール値 = (24 – 12) / (77 – 12) = 12 / 65 = 0.1846

等々。

例 2: Scales パッケージを使用して 0 と 1 の間の値をスケールする

次のコードは、R のスケールパッケージのrescale()関数を使用して、データ フレームのsales列の値を 0 から 1 の間になるようにスケーリングする方法を示しています。

 library (scales)

#scale values in 'sales' column to be between 0 and 1
df$sales <- rescale(df$sales)

#view updated data frame
df

  blind sales
1 A 0.0000000
2 B 0.1846154
3 C 0.1692308
4 D 0.7230769
5 E 0.5076923
6 F 0.3384615
7G 0.5846154
8 H 1.0000000

Sales列の各値が 0 から 1 の間でスケールされるようになりました。

これらのスケール値は、R ベース法を使用して計算された値に対応することに注意してください。

また、 rescale()関数は、スケーリングされた値の範囲指定する to 引数を受け入れることに注意してください。

たとえば、次の構文を使用して、 sales列の値を 0 から 100 の間でスケーリングできます。

 library (scales)

#scale values in 'sales' column to be between 0 and 100
df$sales <- rescale(df$sales, to=c(0,100))

#view updated data frame
df

  blind sales
1 A 0.00000
2 B 18.46154
3 C 16.92308
4 D 72.30769
5 E 50.76923
6 F 33.84615
7G 58.46154
8 A.M. 100.00000

「Sales」列の各値が 0 から 100 の間でスケールされるようになりました。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R でトリミング平均を計算する方法
R で加重平均を計算する方法
Rの各行の最大値を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です