Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除R中数据集的异常值?_R - Fatal编程技术网

如何删除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