我想从我的数据框中删除所有观察结果,其中至少有一个变量超出2个标准偏差。我有38个变量加上另外两个列。
这些行提取异常值:
std=2
outliers = boxplot(data[3:40], plot=FALSE,range=std)$out
但我无法更新我的数据框,我尝试了很多类似的东西:
data[3:40][!data[3:40] %in% outliers]
你能帮我吗?
答案 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 stdevrequire(magrittr); require(dplyr)
df %<>% .[sapply(.[ ,3:40], function(x) x %between% (mean(x) + 2*c(-1, 1)*sd(x))) %>%
apply(1, all)
,]