R의 여러 열에서 이상값을 제거하는 방법


R에서 한 번에 여러 열의 이상값을 제거하려는 경우가 종종 있습니다.

관측치를 이상값으로 정의하는 일반적인 방법은 관측치가 세 번째 사분위수(Q3) 위 사분위수 범위의 1.5배이거나 첫 번째 사분위수(Q1) 아래 사분위수 범위의 1.5배인 경우입니다.

이 정의를 사용하여 다음 단계를 사용하여 이상값을 식별하는 간단한 함수를 만든 다음 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 튜토리얼을 찾을 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다