用R中的离群值替换离群值

时间:2020-07-23 06:07:18

标签: r

正在寻找帮助,

用中位数替换离群值后,我仍然在箱线图中得到离群值。

需要做什么,我不想删除异常值,我只想替换异常值。

我在这里共享我的代码

attach(mba)

quan<- quantile(mba$workex ,probs = c(.25,.75))

range<- 1.5*IQR(mba$workex)

median(mba$workex) 

ravi<- mba

ravi[mba$workex<(quan[1]-range)]<-52

ravi[mba$workex>(quan[2]+range)]<-52

boxplot(ravi$workex)

unique(boxplot(ravi$workex)$out)

我将非常感谢。

1 个答案:

答案 0 :(得分:0)

这是一种可行的方法(但请认真对待@Roland关于所寻求的替代品的警告):

数据:

set.seed(123)
df <- data.frame(
  v1 = c(sample(1:10, 9), 1000),
  v2 = c(runif(9), 2000),
  v3 = c(11111, rnorm(8), 23450))

哪个值是离群值?

boxplot(df)$out

在数据框中定位/检测:

sapply(df, function(x) x %in% boxplot(df)$out)

用中位数代替离群值,例如在第三栏中:

df$v3[df$v3 %in% boxplot(df)$out] <- median(df$v3)

这是两个箱形图,第一个是替换前的,第二个是替换后的:面板中显示的第三列中的异常值已经消失了,如在上的面板:

enter image description here