如何从data.frame中删除指定行

时间:2019-02-12 15:09:19

标签: r

我想将此函数按列应用于data.frame。随后,应从data.frame中删除所有生成NA的行。

remove_outliers <- function(x, na.rm = TRUE, ...) {
  qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
  H <- 1.5 * IQR(x, na.rm = na.rm)
  y <- x
  y[x < (qnt[1] - H)] <- NA
  y[x > (qnt[2] + H)] <- NA
  #y <- y[!is.na(y)]
  y
}

2 个答案:

答案 0 :(得分:0)

要使用IQR查找离群值,可以通过逐列应用apply来应用函数,以用NA替换离群值。 通过which(),您可以找到“数据向量”的索引位置(即您的列堆叠在一起),并通过取模得到在其中检测到NA的行号。要删除唯一值,只需在行上索引dataframe [-c(),]。

X <- apply(X,  MARGIN = 2, FUN = remove_outliers)
na_rows <- unique(which(is.na(X)) %% dim(X)[1])
X <- X[-na_rows, ]

答案 1 :(得分:0)

您拥有na.omit和此功能complete.cases

它可以帮助您查看可用的其他功能

y <- y[complete.cases(y), ]

应该这样做