Как отфильтровать значения NA в конкретном столбце c data.matrix? (данные с иерархией) - PullRequest
0 голосов
/ 16 июня 2020

У меня есть data.matrix df, и я хочу отфильтровать значения NA для столбца col1. Я тестировал разные способы, но всегда получаю ошибки.

Уникальные значения в столбце:

> unique(df$test_data$col1)
[1] "not_finished" "finished"     NA

Вот что я пробовал:

df %>% filter(!is.na(test_data$col1))

Ошибка:

Ошибка в data.matrix (data): объект 'list' не может быть приведен к типу 'double'

или

df[!is.na(test_data$col1)]

Ошибка:

Ошибка в test_data $ col1: оператор $ недействителен для atomi c векторов

или

df[!is.na(test_data.col1)]

Ошибка:

Ошибка в [.data.frame (df,! Is.na (test_data.col1)): объект 'test_data.col1' не найден

Обновление:

dput(df$test_data)

structure(list(col1 = c("not_finished", "finished", 
"not_finished", NA, NA), incident = c("NA", 
"NA", "INC-6033", "NA", "NA"), reason = c("NA", "NA", "False Positive", 
"NA", "NA")), class = "data.frame", row.names = c(NA, 100L))

1 Ответ

0 голосов
/ 16 июня 2020

Прежде всего, проверьте, есть ли у вас NA s в вашем наборе данных

test <- c(1,2,3,NA)
is.na(test)

Если вы хотите удалить строки с NA в них, вы можете использовать na.omit(). Однако, если вы предпочитаете заменить NA другим значением, вы можете использовать ifelse(). Например,

df$col1 <- ifelse(is.na(df$col1), "I used to be NA", df$col1)

Это заменит каждый экземпляр NA на I used to be NA, в противном случае сохранится исходное значение. Конечно, это зависит от вашего варианта использования, хотите ли вы удалить или заменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...