Удалить значения NA из вектора
482962 просмотра
6 ответа
У меня есть огромный вектор, который имеет пару NA
значений, и я пытаюсь найти максимальное значение в этом векторе (вектор это все числа), но я не могу сделать это из-за NA
значений.
Как я могу удалить NA
значения, чтобы я мог вычислить максимум?
Ответы (6)
241 плюса
Попробовав ?max
, вы увидите, что у него действительно есть na.rm =
аргумент, установленный по умолчанию в FALSE
. (Это стандартное значение по умолчанию для многих других функций R, включая sum()
, mean()
и т. Д.)
Установка na.rm=TRUE
делает только то, что вы просите:
d <- c(1, 100, NA, 10)
max(d, na.rm=TRUE)
Если вы хотите удалить все NA
s, используйте вместо этого эту идиому:
d <- d[!is.na(d)]
Последнее замечание: другие функции (например table()
, lm()
и sort()
) имеют NA
связанные аргументы, которые используют разные имена (и предлагают разные варианты). Так что, если у NA
вас проблемы с вызовом функции, стоит проверить наличие встроенного решения среди аргументов функции. Я обнаружил, что обычно там уже есть один.
90 плюса
Эта na.omit
функция используется многими внутренними процедурами регрессии:
vec <- 1:1000
vec[runif(200, 1, 1000)] <- NA
max(vec)
#[1] NA
max( na.omit(vec) )
#[1] 1000
Автор: 42-
Размещён: 09.10.2011 10:27
18 плюса
?max
показывает, что есть дополнительный параметр, na.rm
который вы можете установить TRUE
.
Кроме того, если вы действительно хотите удалить NA
s, просто используйте что-то вроде:
myvec[!is.na(myvec)]
Автор: Nick Sabbe
Размещён: 09.10.2011 10:22
15 плюса
Вы можете позвонить max(vector, na.rm = TRUE)
. В более общем смысле, вы можете использовать na.omit()
функцию.
12 плюса
На всякий случай, если кто-то новичок в R хочет получить упрощенный ответ на оригинальный вопрос
Как я могу удалить значения NA из вектора?
Вот:
Предположим, у вас есть вектор foo
следующим образом:
foo = c(1:10, NA, 20:30)
Бег length(foo)
дает 22.
nona_foo = foo[!is.na(foo)]
length(nona_foo)
21, потому что значения NA были удалены.
Помните, is.na(foo)
возвращает булеву матрицу, поэтому индексирование foo
с обратным значением этого значения даст вам все элементы, которые не являются NA.
5 плюса
Использование discard
от purrr (работает со списками и векторами).
discard(v, is.na)
Преимущество заключается в простоте использования труб; в качестве альтернативы используйте встроенную функцию поднабора [
:
v %>% discard(is.na)
v %>% `[`(!is.na(.))
Автор: qwr
Размещён: 26.07.2019 05:55
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- max Есть ли в SQL Server функция Max, которая принимает два значения, такие как Math.Max ??в .NET?
- max Получение ключа с максимальным значением в словаре?
- max Как я могу выбрать строки с MAX (значение столбца), DISTINCT по другому столбцу в SQL?
- max How to perform .Max() on a property of all objects in a collection and return the object with maximum value
- min Как получить MIN () из двух полей в Postgres?
- min Каков наилучший способ выбрать минимальное значение из нескольких столбцов?
- min Как бы вы определили простой метод "min" в obj-c
- min Самый эффективный способ найти наибольшее из трех целых
- na Замена символьных значений на NA в кадре данных
- na Одна функция для обнаружения NaN, NA, Inf, -Inf и т. Д.?
- na Удалить значения NA из вектора
- na Подмножество строк, содержащих NA (отсутствующие) значения в выбранном столбце фрейма данных
- missing-data Удалить строки со всеми или некоторыми NA (отсутствующими значениями) в data.frame
- missing-data Как построить случайные леса в R с отсутствующими (NA) значениями?
- missing-data Удалить строки с пустыми значениями в одном конкретном столбце