如何删除R中数据集的异常值?
有人能告诉我如何删除第一列的异常值,同时保留第二列吗?我的数据集如下:如何删除R中数据集的异常值?,r,R,有人能告诉我如何删除第一列的异常值,同时保留第二列吗?我的数据集如下: Y X 79 1.00000000 70 1.00000000 10 0.90000000 78 1.00000000 ... ... 您需要定义什么是“异常值”,但例如,任何不在平均值正负两个标准偏差范围内的值都是异常值: m<-mean(df$Y) sd<-sd(df$Y) out.u<-m+2*sd out.l<-m-2*sd m如果已将异常值定义为小于(或大于)
Y X
79 1.00000000
70 1.00000000
10 0.90000000
78 1.00000000
... ...
您需要定义什么是“异常值”,但例如,任何不在平均值正负两个标准偏差范围内的值都是异常值:
m<-mean(df$Y)
sd<-sd(df$Y)
out.u<-m+2*sd
out.l<-m-2*sd
m如果已将异常值定义为小于(或大于)特定值,则可以使用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
>dat dat$Y要使用什么过程来删除异常值?+-2 sd、框修剪、递归?请看这里。问题是如何删除Y中的异常值,但将值保留在X中。这将删除整行。
no.out<-subset(df,df$Y<out.u & df&Y>out.l)
> 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