Часто вы можете захотеть заменить отсутствующие значения в столбцах фрейма данных в 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