Как удалить указанные строки из data.frame - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу применить эту функцию по столбцам к data.frame.Впоследствии все строки, в которых были созданы NA, должны быть удалены из data.frame.

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 голосов
/ 12 февраля 2019

У вас есть na.omit и эта функция complete.cases

Это может помочь вам проверить другие доступные функции

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

Должен это сделать

0 голосов
/ 12 февраля 2019

Чтобы найти свои выбросы с помощью IQR, вы можете применить свою функцию с помощью применения по столбцу, чтобы заменить выбросы на NA.С помощью которого () вы находите индексные положения «вектора данных» - то есть столбцов, которые вы сложили - и по модулю вы получаете номера строк, в которых был обнаружен 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, ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...