首页 > 解决方案 > 大型数据集的异常值处理

问题描述

我正在做一个项目并且有一个 8545 X 52 的数据集。每个变量都有异常值,不幸的是我无法删除异常值。我知道通过检查每列的 IQR 来设置上限的方法,但由于列数为 52,因此需要很长时间。任何人都可以建议任何快速的方法来处理异常值。

标签: routliers

解决方案


检查和识别异常值的一种非常快速(且肮脏)的方法是:

数据:

set.seed(123)
df <- data.frame(
  v1 = c(sample(1:10, 9), 1000),
  v2 = c(runif(9), 2000),
  v3 = c(11111, rnorm(8), 23450))

箱线图本身识别异常值;它们可以通过以下方式检索$out

boxplot(df)$out
[1]   100  2000 11111  2345

要在数据框中检测这些值,您可以使用sapply

sapply(df, function(x) x %in% boxplot(df)$out)
         v1    v2    v3
 [1,] FALSE FALSE  TRUE
 [2,] FALSE FALSE FALSE
 [3,] FALSE FALSE FALSE
 [4,] FALSE FALSE FALSE
 [5,] FALSE FALSE FALSE
 [6,] FALSE FALSE FALSE
 [7,] FALSE FALSE FALSE
 [8,] FALSE FALSE FALSE
 [9,] FALSE FALSE FALSE
[10,]  TRUE  TRUE  TRUE

推荐阅读