R で欠損値を代入する方法 (例付き)


多くの場合、R のデータ フレームの列の欠損値を、その特定の列の平均値または中央値で置き換えたい場合があります。

単一列の欠損値を置換するには、次の構文を使用できます。

 df$col[ is.na (df$col)] <- mean(df$col, na.rm = TRUE )

複数の列の欠損値を置き換えるには、次の構文を使用できます。

 for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE )
}

このチュートリアルでは、これらの関数を実際に使用する方法を正確に説明します。

例 1: 欠損値を列平均で置き換える

次のコードは、データ フレームの最初の列の欠損値を最初の列の平均値に置き換える方法を示しています。

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, 3, 2),
                 var3=c(3, 3, 6, 6, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in first column with mean of first column
df$var1[ is.na (df$var1)] <- mean(df$var1, na.rm = TRUE )

#view data frame with missing values replaced
df

      var1 var2 var3 var4
1 1.000000 7 3 1
2 3.333333 7 3 1
3 3.333333 8 6 2
4 4.000000 3 6 8
5 5.000000 2 8 9

最初の列の平均値は3.333だったので、最初の列の欠損値は3.333に置き換えられました。

次のコードは、各列の欠損値を独自の列の平均に置き換える方法を示しています。

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in each column with column means
for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE )
}

#view data frame with missing values replaced
df

      var1 var2 var3 var4
1 1.000000 7 5.666667 1
2 3.333333 7 3.000000 1
3 3.333333 8 6.000000 2
4 4.000000 6 5.666667 8
5 5.000000 2 8.000000 9

例 2: 欠損値を列の中央値で置き換える

次のコードは、データ フレームの最初の列の欠損値を最初の列の中央値で置き換える方法を示しています。

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in first column with median of first column
df$var1[ is.na (df$var1)] <- median(df$var1, na.rm = TRUE )

#view data frame with missing values replaced
df

  var1 var2 var3 var4
1 1 7 NA 1
2 4 7 3 1
3 4 8 6 2
4 4 NA NA 8
5 5 2 8 9

最初の列の中央値は4であったため、最初の列の欠損値は4に置き換えられました。

次のコードは、各列の欠損値をその列の中央値で置き換える方法を示しています。

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in each column with column medians
for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- median(df[ , i], na.rm = TRUE )
}

#view data frame with missing values replaced
df

  var1 var2 var3 var4
1 1 7 6 1
2 4 7 3 1
3 4 8 6 2
4 4 7 6 8
5 5 2 8 9

追加リソース

R で列名を反復処理する方法
R で複数の列の平均を計算する方法
R で特定の列を合計する方法

コメントを追加する

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