Как удалить выбросы из нескольких столбцов в R


Часто вам может понадобиться удалить выбросы сразу из нескольких столбцов в R.

Один из распространенных способов определить наблюдение как выброс - это если оно в 1,5 раза превышает межквартильный размах, чем третий квартиль (Q3), или в 1,5 раза превышает межквартильный размах, чем первый квартиль (Q1).

Используя это определение, мы можем использовать следующие шаги, чтобы создать простую функцию для выявления выбросов, а затем применить эту функцию к нескольким столбцам во фрейме данных R.

Шаг 1: Создайте фрейм данных.

Во-первых, давайте создадим фрейм данных в R:

df <- data.frame(index=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
 var1=c(4, 4, 5, 4, 3, 2, 8, 9, 4, 5),
 var2=c(1, 2, 4, 4, 6, 9, 7, 8, 5, 29),
 var3=c(9, 9, 9, 5, 5, 3, 4, 5, 11, 34))

Шаг 2: Определите функцию выброса.

Далее давайте определим функцию, которая может идентифицировать выбросы, и функцию, которая затем может удалить выбросы:

outliers <- function (x) {

 Q1 <- quantile(x, probs =.25)
 Q3 <- quantile(x, probs =.75)
 iqr = Q3-Q1

 upper_limit = Q3 + (iqr\*1.5)
 lower_limit = Q1 - (iqr\*1.5)

 x > upper_limit | x < lower_limit
}

remove_outliers <- function (df, cols =names(df)) {
 for (col in cols) {
 df <- df[!outliers(df[[col]]),]
 }
 df
}

Шаг 3: Примените функцию выброса к фрейму данных.

Наконец, давайте применим эту функцию к нескольким столбцам фрейма данных, чтобы удалить выбросы:

remove_outliers(df, c('var1', 'var2', 'var3'))

 index var1 var2 var3
1 1 4 1 9
2 2 4 2 9
3 3 5 4 9
4 4 4 4 5
5 5 3 6 5
9 9 4 5 11

Вы можете найти больше руководств по R здесь .

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