如何从 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 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注