строки поднабора содержат NA для определенных столбцов - PullRequest
1 голос
/ 28 апреля 2020

У меня есть набор данных, который для определенных столбцов (скажем, «USD.Price / l») в определенных строках содержит NA (в других столбцах в этих строках нет NA), я попытался выделить эти строки, содержащие NA , У меня есть два пути: 1) df[df$`USD.Price/l`=="NA",] 2) df[is.na(df$`USD.Price/l`),] Хотя второй способ работает отлично, но почему первый дает правильный размер, но все NA в каждой строке и столбце?

1 Ответ

1 голос
/ 28 апреля 2020

Проблема также в том, что == возвращает NA там, где есть NA элементы. Кроме того, NA не "NA" указан

v1 <- c(NA, 3, 5, NA)
v1 == "NA"
#[1]    NA FALSE FALSE    NA

или без кавычек

v1 == NA
#[1] NA NA NA NA

Правильный путь is.na или complete.cases

complete.cases(v1) # returns TRUE where there are no NA
#[1] FALSE  TRUE  TRUE FALSE

is.na(v1) # returns TRUE where there are NAs
#[1]  TRUE FALSE FALSE  TRUE

Если мы проверим ?

Пропущенные значения (NA) и значения NaN считаются несопоставимыми даже для самих себя, поэтому сравнения с ними всегда приводят к NA. Пропущенные значения также могут возникать при сравнении символьных строк, и одна из них недопустима в текущей локали сопоставления.

...