Как заменить пропущенные значения в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.