2019-03-05
阅读量:
2832
R语言如何批量删除异常值
写一个可以检测异常值的函数,然后对数据框sapply
比如要从一个100行5列的数据框检测异常值
outlier <- sapply(df,function(X){boxplot.stats(X)$out})
# $X1
# numeric(0)
# $X2
# [1] 2.989303
# $X3
# numeric(0)
# $X4
# numeric(0)
# $X5
# [1] -2.837191
也可以定位数据框的每一列的异常值的位置,然后取并集,就是需要删除的异常值,最后的df_nooutlier即为所得。
outlier_location <- sapply(df,function(X){which(X%in%boxplot.stats(X)$out)})
# $X1
# integer(0)
# $X2
# [1] 81
# $X3
# integer(0)
# $X4
# integer(0)
# $X5
# [1] 90
todel <- (sort(unique(unlist(outlier_location))))
# 取并集,就是需要删除的异常值在原数据框的行位置。
# [1] 81 90
df_nooutlier <- df[-todel,]
0.0000
0
1
关注作者
收藏
评论(0)
发表评论
暂无数据

