首页 > 解决方案 > R中的异常值截止

问题描述

我试图切断数据帧变量的异常值,但它没有按预期执行:

outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- which(myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]

此代码不会给出错误,但不会更改异常值。

标签: rdataframeoutliers

解决方案


这里没有必要which

查看您的代码,我认为您可以使用以下内容删除“异常值”:

outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- (myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]

这是一个可重复的示例,可验证有效(使用向量)。

set.seed(123)
nov <- rnorm(500)

outlier_cutoff1 <- quantile(nov, 0.75) + 1.5 * IQR(nov)
  #This is 2.574977 
index_outlier1 <- nov > outlier_cutoff1
  #This returns a logical vector inticating when each value is greater than 2.574977 

mydnov <- nov[-index_outlier1]

length(nov)  #500

length(mydnov)  #499, one was removed

推荐阅读