如何删除R中数据集的异常值?

时间:2014-03-08 06:52:31

标签: r

有谁能告诉我如何删除第一列的异常值并同时保留第二列?我的数据集如下:

Y     X

79  1.00000000

70  1.00000000

10  0.90000000

78  1.00000000

...  ...

2 个答案:

答案 0 :(得分:4)

你需要定义你的意思但是异常,但是例如,假设任何不在平均值的正负两个标准偏差范围内的值都是异常值:

m<-mean(df$Y)
sd<-sd(df$Y)
out.u<-m+2*sd
out.l<-m-2*sd

这将用NA替换异常值:

rem.out<-ifelse(df$Y>out.u or dfY<out.l,NA,df$Y)

这将删除整行:

no.out<-subset(df,df$Y<out.u & df&Y>out.l)

答案 1 :(得分:1)

如果您已将异常值定义为小于(或大于)特定值,则可以使用ifelse。例如,如果异常值定义为小于或等于15,并且您想要删除Y中的值并将值保留在X中,则可以执行

> dat <- data.frame(Y = c(79, 70, 10, 78), X = c(1, 1, 0.9, 1))
> dat$Y <- ifelse(dat$Y <= 15, NA, dat$Y)
> dat
##    Y   X
## 1 79 1.0
## 2 70 1.0
## 3 NA 0.9
## 4 78 1.0