Хобрук: Ваш путь к мастерству в программировании

Значения NA не распознаются должным образом с помощью dplyr

У меня есть набор данных с двумя столбцами, в одном из которых отсутствуют значения. Я загружаю его с помощью

data <- read_excel("file.xlsx") %>%
  select("ID", "Value")

Тиббл выглядит так

ID Value
1 2
NA 4
32 1

НП признаны таковыми. Однако я использую

data["ID"=="NA"] <- NA

чтобы убедиться, что проблема не в этом (R: is .na () не принимает значение NA).

Когда я пытаюсь отфильтровать:

data %>%
filter(!is.na(ID))

весь тибет остается неизменным, и ни одна строка не удаляется. Так что я пытаюсь

data %>%
mutate(
isna <- is.na(ID)
)

и все isna ЛОЖНЫ.

Почему не распознает dplyr NA?

Я благодарен за любую помощь!

02.07.2021

  • Вы проверяли, действительно ли это NA NA, а не строка? 02.07.2021
  • да! Вот почему я использовал: data["ID"=="NA"] <- NA 02.07.2021
  • @ C.Sebastian. Этот код делает не то, что вы хотите. 02.07.2021

Ответы:


1

Добро пожаловать в SO! Используйте это, чтобы мутировать NA, а затем удалите NA:

data <- data %>% 
  mutate(ID = ifelse(ID == "NA",NA,ID)) %>%
  filter(!is.na(ID))
02.07.2021
  • Спасибо. Это сработало! Одна из проблем могла также заключаться в том, что имя столбца, которое я проксировал здесь с помощью ID, изначально состояло из двух слов, то есть номера идентификатора. Поэтому вместо идентификатора в вашем коде я попробовал «номер идентификатора», и похоже, что dplyr не нравится такой способ имени столбца. 02.07.2021
  • Пожалуйста. Не забудьте подтвердить один из ответов @ C.Sebastian 02.07.2021
  • @ С.Себастьян, извини, не обратил внимания на последнюю часть твоего ответа. Используйте `identifer number`, чтобы заставить его работать 02.07.2021

  • 2
    data["ID"=="NA"] <- NA
    

    ничего не делает. Условие "ID"=="NA" всегда равно FALSE, поскольку вы сравниваете два неравных строковых литерала ("ID" и "NA"). Чтобы исправить это, используйте, например,

    data[data$ID == "NA", "ID"] <- NA
    
    02.07.2021
  • Спасибо. Хотя я получаю сообщение об ошибке (всего в наборе данных 167 строк): Error: Must assign to columns with a valid subscript vector. i Logical subscripts must match the size of the indexed input. x Input has size 2 but subscript data $ ID == NA` имеет размер 167.` 02.07.2021
  • @ C.Sebastian Да, мой код был полностью неправильным, извините за это. И, несмотря на это, два человека проголосовали за него! Исправил сейчас. 02.07.2021

  • 3

    Почему не прямо

    data %>%
      filter(ID != "NA")
    

    or

    subset(data, ID != "NA")
    
    02.07.2021
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..