r - 大型数据集的异常值处理
问题描述
我正在做一个项目并且有一个 8545 X 52 的数据集。每个变量都有异常值,不幸的是我无法删除异常值。我知道通过检查每列的 IQR 来设置上限的方法,但由于列数为 52,因此需要很长时间。任何人都可以建议任何快速的方法来处理异常值。
解决方案
检查和识别异常值的一种非常快速(且肮脏)的方法是:
数据:
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
推荐阅读
- android - 仅从 Android O 开始支持调用自定义
- android - 如何使用 CSS 媒体查询检测 Android 设备的默认字体大小?
- python - 构建和移动 numpy 数组
- php - 如果值在php中是十进制的,如何获得舍入值?
- excel - VBA平等不匹配?
- numpy - 显示来自 Numpy 数组的类概率
- reactjs - 使用 Webpack 4 进行捆绑拆分 - 重复的供应商捆绑
- python - 运行以下“训练模型”后,出现此错误
- karate - 在 input() 中使用 script()
- django - Django / Customized ModelChoiceField:label_from_instance 如何工作?