Как и следовало ожидать от DSL, предназначенного для анализа данных, R очень хорошо обрабатывает недостающие/неполные данные, например:
Многие функции R имеют флаг na.rm, который, когда установлен в значение ИСТИНА, удаляет NAs:
>>> 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" из вектора и заменить его w/a '0':
ifelse(is.na(vx), 0, vx)
удалить всю строку, содержащую "NA" из фрейма данных:
dfx = dfx[complete.cases(dfx),]
Все эти функции постоянно удаляют "NA" или строки с "NA" в них.
Иногда это не совсем то, чего вы хотите, но для следующего шага в рабочем процессе может потребоваться "Исправленная копия кадра NA", но на последующих шагах вам часто нужны эти строки (например, для вычисления столбчатой статистики для столбца с недостающими строками, вызванного предыдущим вызовом "полных дел", но этот столбец не имеет в нем значений "NA" ).
чтобы быть как можно яснее о том, что я ищу: python/numpy имеет класс, маскированный массив, с методом маски, который позволяет вам скрывать, но не удалять - NA во время вызова функции. Существует ли аналогичная функция в R?