有谁能告诉我如何删除第一列的异常值并同时保留第二列?我的数据集如下:
Y X
79 1.00000000
70 1.00000000
10 0.90000000
78 1.00000000
... ...
答案 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