Rでnaを中央値に置き換える方法
R のdplyrおよびTidyrパッケージの関数を使用して、次のメソッドを使用して NA 値を中央値に置き換えることができます。
方法 1: NA 値を列の中央値に置き換える
df %>% mutate(across(col1, ~replace_na(., median(., na. rm = TRUE ))))
方法 2: 複数の列の NA 値を中央値に置き換える
df %>% mutate(across(c(col1, col2), ~replace_na(., median(., na. rm = TRUE ))))
方法 3: すべての数値列の NA 値を中央値に置き換える
df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., 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 median of points column df <- df %>% mutate(across(points, ~replace_na(., median(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1 2 B 13 4 1 3 C 15 NA 2 4 D 9 NA 4 5 E 25 8 NA
ポイント列の中央値は 15 であったため、ポイント列の NA 値は 15 に置き換えられました。
他のすべての列は変更されませんでした。
例 2: 複数の列の NA 値を中央値に置き換える
次のコードは、ポイント列とブロック列の NA 値をそれぞれの列の中央値に置き換える方法を示しています。
library (dplyr) library (tidyr) #replace NA values in points and blocks columns with their respective medians df <- df %>% mutate(across(c(points, blocks), ~replace_na(., median(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1.0 2 B 13 4 1.0 3 C 15 NA 2.0 4 D 9 NA 4.0 5 E 25 8 1.5
ポイント列とブロック列の NA 値は両方とも、それぞれの列の中央値に置き換えられていることに注意してください。
例 3: すべての数値列の NA 値を中央値に置き換えます
次のコードは、各数値列の NA 値をそれぞれの中央値に置き換える方法を示しています。
library (dplyr) library (tidyr) #replace NA values in all numeric columns with their respective medians df <- df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1.0 2 B 13 4 1.0 3 C 15 4 2.0 4 D 9 4 4.0 5 E 25 8 1.5
すべての数値列の NA 値が、それぞれの列の中央値に置き換えられていることに注意してください。
数値ではない唯一の列(プレーヤー)は変更されませんでした。
追加リソース
次のチュートリアルでは、dplyr で他の一般的なタスクを実行する方法を説明します。
dplyrを使用して特定の文字列を含む行をフィルタリングする方法
dplyrを使用して行を削除する方法
dplyr で across() 関数を使用する方法