R 在列中发现超出给定限制的异常值时删除矩阵行

R 在列中发现超出给定限制的异常值时删除矩阵行,r,matrix,outliers,R,Matrix,Outliers,当我在同一个矩阵的列中发现一个超出给定限制的异常值时,我试图找出如何删除整行。所以我得到了一个带有标记列(B、C、D等)的数据集,我想从中删除大于3个标准偏差的异常值。当发现异常值时,将删除整行。使用一列时,下一列将重复相同的步骤 我发现了这篇文章:但是那里的代码删除了1.5标准偏差之外的所有异常值,而不是超出您自己的限制,对吗 (很抱歉,如果这是一个基本问题,我对R比较陌生。我以前只使用MatLab进行过编码。)在这种情况下,您必须定义自己的函数来识别异常值。请尝试以下操作: remove_o

当我在同一个矩阵的列中发现一个超出给定限制的异常值时,我试图找出如何删除整行。所以我得到了一个带有标记列(B、C、D等)的数据集,我想从中删除大于3个标准偏差的异常值。当发现异常值时,将删除整行。使用一列时,下一列将重复相同的步骤

我发现了这篇文章:但是那里的代码删除了1.5标准偏差之外的所有异常值,而不是超出您自己的限制,对吗


(很抱歉,如果这是一个基本问题,我对R比较陌生。我以前只使用MatLab进行过编码。)

在这种情况下,您必须定义自己的函数来识别异常值。请尝试以下操作:

remove_outliers2 <- function(x, limit = 3) {
    mn <- mean(x, na.rm = T)
    out <- limit * sd(x, na.rm = T)
    x < (mn - out) | x > (mn + out)
}

然后继续删除包含TRUE的行。

在您所指的链接中,它不会删除1.5sd,而是删除1.5*四分位数范围。此外,你可能想阅读
apply(x,2,remove_outliers2,lim = 2)