Dplyr で na を平均に置き換える方法


R のdplyrおよびTidyrパッケージの関数を使用して、次のメソッドを使用して NA 値を平均値に置き換えることができます。

方法 1: NA 値を列の平均値に置き換える

 df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))

方法 2: NA 値を複数の列の平均値に置き換える

 df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))

方法 3: すべての数値列の NA 値を平均値に置き換える

 df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))

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

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D', 'E'),
                 points=c(17, 13, NA, 9, 25),
                 rebounds=c(3, 4, NA, NA, 8),
                 blocks=c(1, 1, 2, 4, NA))

#view data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C NA NA 2
4 D 9 NA 4
5 E 25 8 NA

例 1: NA 値を列の平均値に置き換えます

次のコードは、ポイント列の NA 値をポイント列の平均値に置き換える方法を示しています。

 library (dplyr)
library (tidyr)

#replace NA values in points column with mean of points column
df <- df %>% mutate(across(points, ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 NA 2
4 D 9 NA 4
5 E 25 8 NA

ポイント列の平均値は 16 だったので、ポイント列の NA 値は 16 に置き換えられました。

他のすべての列は変更されませんでした。

例 2: NA 値を複数の列の平均値に置き換える

次のコードは、ポイント列ブロック列の NA 値をそれぞれの列平均に置き換える方法を示しています。

 library (dplyr)
library (tidyr)

#replace NA values in points and blocks columns with their respective means
df <- df %>% mutate(across(c(points, blocks), ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 NA 2
4 D 9 NA 4
5 E 25 8 2

ポイント列ブロック列の NA 値は両方とも、それぞれの列の平均値に置き換えられていることに注意してください。

例 3: すべての数値列の NA 値を平均値に置き換えます

次のコードは、各数値列の NA 値をそれぞれの平均値に置き換える方法を示しています。

 library (dplyr)
library (tidyr)

#replace NA values in all numeric columns with their respective means
df <- df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 5 2
4 D 9 5 4
5 E 25 8 2

すべての数値列の NA 値がそれぞれの列の平均値に置き換えられていることに注意してください。

数値ではない唯一の列(プレーヤー)は変更されませんでした。

追加リソース

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

dplyrを使用して特定の文字列を含む行をフィルタリングする方法
dplyr を使用して相対周波数を計算する方法
dplyrを使用してグループごとに最初の行を選択する方法

コメントを追加する

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