【问题标题】:Outlier treatment of large dataset [duplicate]大型数据集的异常值处理[重复]
【发布时间】:2020-10-31 23:44:57
【问题描述】:

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

【问题讨论】:

  • 欢迎堆栈溢出。如果您使您的问题可重现,则更容易提供帮助:以对象的形式包含一个最小数据集,例如,如果数据框为 df minimal reproducible example 和 How to Ask

标签: r outliers


【解决方案1】:

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

数据:

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

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2015-12-17
    • 2023-03-12
    相关资源
    最近更新 更多