Как и следовало ожидать от DSL, предназначенного для анализа данных, R очень хорошо обрабатывает отсутствующие / неполные данные, например:
Многие функции R имеют флаг na.rm , который при установке на TRUE удаляет NA:
>>> v = mean( c(5, NA, 6, 12, NA, 87, 9, NA, 43, 67), na.rm=T)
>>> v
(5, 6, 12, 87, 9, 43, 67)
Но если вы хотите иметь дело с NA до вызова функции, вам нужно сделать что-то вроде этого:
для удаления каждого 'NA' из вектора:
vx = vx[!is.na(a)]
чтобы убрать каждое «NA» из вектора и заменить его на «0»:
ifelse(is.na(vx), 0, vx)
для удаления всей строки, содержащей «NA», из фрейма данных:
dfx = dfx[complete.cases(dfx),]
Все эти функции постоянно удаляют 'NA' или строки с 'NA' в них.
Иногда это не совсем то, что вы хотите - создание вырезанной из NA копии фрейма данных может потребоваться для следующего шага в рабочем процессе, но на последующих шагах вы часто хотите вернуть эти строки (например, вычислить статистику по столбцам для столбца, в котором отсутствуют строки, вызванные предыдущим вызовом «завершенных случаев», но в этом столбце нет значений «NA»).
, чтобы быть как можно более понятным о том, что я ищу: python / numpy имеет класс, маскированный массив , с mask методом, который позволяет вам скрыть - но не удалить - NA во время вызова функции. Есть ли аналогичная функция в R?