使用boxplot函数从数据框中删除异常值

时间:2018-02-19 00:27:07

标签: r boxplot outliers

我想从我的数据框中删除所有观察结果,其中至少有一个变量超出2个标准偏差。我有38个变量加上另外两个列。

这些行提取异常值:

std=2
outliers = boxplot(data[3:40], plot=FALSE,range=std)$out

但我无法更新我的数据框,我尝试了很多类似的东西:

data[3:40][!data[3:40] %in% outliers]

你能帮我吗?

2 个答案:

答案 0 :(得分:0)

@mobupu Tjebo是对的。 boxplot(x, outline = FALSE)删除异常值。 这是一个简单的可重复的例子。

i<-iris$Sepal.Length
i[151]<-25
boxplot(i)
boxplot(i, outline = FALSE)

答案 1 :(得分:0)

您可以移除第3:40列中任何变量所在的行>

的平均值为2 stdev
require(magrittr); require(dplyr)
df %<>%  .[sapply(.[ ,3:40], function(x) x %between% (mean(x) + 2*c(-1, 1)*sd(x))) %>% 
            apply(1, all)
        ,]