R でデータ クレンジングを実行する方法 (例あり)
データ クリーニングとは、生データを分析やモデル構築に適したデータに変換するプロセスを指します。
ほとんどの場合、データセットの「クリーニング」には、欠損値や重複データの処理が含まれます。
R でデータセットを「クリーニング」する最も一般的な方法は次のとおりです。
方法 1: 欠損値のある行を削除する
library (dplyr) #remove rows with any missing values df %>% na. omit ()
方法 2: 欠損値を別の値に置き換える
library (dplyr) library (tidyr) #replace missing values in each numeric column with median value of column df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))
方法 3: 重複する行を削除する
library (dplyr) df %>% distinct(. keep_all = TRUE )
次の例は、さまざまなバスケットボール選手に関する情報を含む R の次のデータ フレームを使用して、これらの各メソッドを実際に使用する方法を示しています。
#create data frame df <- data. frame (team=c('A', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'), points=c(4, 4, NA, 8, 6, 12, 14, 86, 13, 8), rebounds=c(9, 9, 7, 6, 8, NA, 9, 14, 12, 11), assists=c(2, 2, NA, 7, 6, 6, 9, 10, NA, 14)) #view data frame df team points rebound assists 1 to 4 9 2 2 to 4 9 2 3 B NA 7 NA 4 C 8 6 7 5 D 6 8 6 6 E 12 NA 6 7 F 14 9 9 8 G 86 14 10 9:13:12 NA 10 I 8 11 14
例 1: 欠損値のある行を削除する
次の構文を使用して、任意の列に欠損値がある行を削除できます。
library (dplyr) #remove rows with missing values new_df <- df %>% na. omit () #view new data frame new_df team points rebound assists 1 to 4 9 2 2 to 4 9 2 4 C 8 6 7 5 D 6 8 6 7 F 14 9 9 8 G 86 14 10 10 I 8 11 14
新しいデータ フレームには、値が欠落している行が含まれていないことに注意してください。
例 2: 欠損値を別の値に置き換える
次の構文を使用して、欠損値を各列の中央値に置き換えることができます。
library (dplyr) library (tidyr) #replace missing values in each numeric column with median value of column new_df <-df %>% mutate(across(where(is. numeric ),~replace_na(.,median(.,na. rm = TRUE )))) #view new data frame new_df team points rebound assists 1 to 4 9 2.0 2 to 4 9 2.0 3 B 8 7 6.5 4 C 8 6 7.0 5 D 6 8 6.0 6 E 12 9 6.0 7 F 14 9 9.0 8 G 86 14 10.0 9:13 12 6.5 10 I 8 11 14.0
各数値列の欠損値はそれぞれ列の中央値に置き換えられていることに注意してください。
数式内の中央値を平均値に置き換えて、欠損値を各列の平均値に置き換えることもできることに注意してください。
注: Drop_na()関数はそのパッケージからのものであるため、この例ではTidyrパッケージもロードする必要がありました。
例 3: 重複行を削除する
次の構文を使用して、欠損値を各列の中央値に置き換えることができます。
library (dplyr) #remove duplicate rows new_df <- df %>% distinct(. keep_all = TRUE ) #view new data frame new_df team points rebound assists 1 to 4 9 2 2 B NA 7 NA 3 C 8 6 7 4 D 6 8 6 5 E 12 NA 6 6 F 14 9 9 7 G 86 14 10 8:13:12 NA 9 I 8 11 14
2 行目の各値は最初の行の値の重複であったため、2 行目はデータ フレームから削除されたことに注意してください。
注: dplyrdistinct ()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。