R で数値列のみをスケーリングする方法 (例あり)


dplyrパッケージの次の構文を使用して、R のデータ フレームの数値列のみをスケーリングできます。

 library (dplyr)

df %>% mutate(across(where(is. numeric ), scale))

次の例は、この関数を実際に使用する方法を示しています。

例: dplyr を使用して数値列のみをスケールする

R に、さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 dots=c(22, 34, 30, 12, 18),
                 assists=c(7, 9, 9, 12, 14),
                 rebounds=c(5, 10, 10, 8, 8))

#view data frame
df

  team points assists rebounds
1 to 22 7 5
2 B 34 9 10
3 C 30 9 10
4 D 12 12 8
5 E 18 14 8

R のscale関数を使用して、データ フレームの数値列のみをスケーリングするとします。

これを行うには、次の構文を使用できます。

 library (dplyr)

#scale only the numeric columns in the data frame
df %>% mutate(across(where(is. numeric ), scale))

  team points assists rebounds
1 A -0.1348400 -1.153200 -1.56144012
2 B 1.2135598 -0.432450 0.87831007
3 C 0.7640932 -0.432450 0.87831007
4 D -1.2585064 0.648675 -0.09759001
5 E -0.5843065 1.369425 -0.09759001

3 つの数値列 (ポイントアシストリバウンド) の値はスケーリングされていますが、チーム列は変更されていないことに注意してください。

技術的なメモ

R のscale()関数は、次の基本構文を使用します。

 scale(x, center = TRUE , scale = TRUE )

金:

  • x : スケールするオブジェクトの名前
  • center : スケーリング時に平均を減算するかどうか。デフォルトはTRUEです。
  • scale : スケーリング時に標準偏差で割るかどうか。デフォルトはTRUEです。

この関数は、次の式を使用してスケーリングされた値を計算します。

スケーリングされたx = (元のx – x̄) / s

金:

  • 元のx : 元の x 値
  • : サンプルの意味
  • s : サンプルの標準偏差

これはデータ正規化とも呼ばれ、元の各値をZ スコアに単純に変換します。

追加リソース

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

dplyr を使用して名前で列を選択する方法
dplyrを使用してインデックスによって列を選択する方法
dplyr で複数の条件で select_if を使用する方法

コメントを追加する

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