正在寻找帮助,
用中位数替换离群值后,我仍然在箱线图中得到离群值。
需要做什么,我不想删除异常值,我只想替换异常值。
我在这里共享我的代码
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)
我将非常感谢。
答案 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)
这是两个箱形图,第一个是替换前的,第二个是替换后的:右面板中显示的第三列中的异常值已经消失了,如在左上的面板: