удалять строки, если они содержат пустые ячейки в r

#r

#r

Вопрос:

У меня есть большой фрейм данных (Y), который содержит пустые ячейки -> «» или NaN или даже N / A Я попытался очистить фрейм данных с помощью следующей команды:

 Y <- na.omit(mutate_all(Y, ~ifelse(. %in% c("N/A", "null", ""),  NA, .)))
  

Но каким-то образом это преобразует все значения в целочисленные (даже нечисловые столбцы).

Я не могу поделиться фреймом данных или его частями из-за конфиденциальности, но, пожалуйста, дайте мне знать, если эта проблема звучит знакомо и как вам удалось ее решить.

Комментарии:

1. Вы могли бы создать небольшой воспроизводимый data.frame, который наилучшим образом описывает вашу проблему

Ответ №1:

Вероятно, вы могли бы использовать:

 type.convert(data.frame(gsub('^N/A$', '', trimws(as.matrix(Y))))
  

Обратите внимание, что type.convert(c('', 'NaN', 'NA', 8, 9)) это преобразует вектор в числовой. единственной проблемой является N/A строка

Комментарии:

1. за этим следует команда na.omit(), которая сработала для меня

Ответ №2:

Возможно, у вас есть факторы в ваших данных, которые вызывают проблемы. Вы можете применить функцию только к столбцам символов и коэффициентов в данных.

 library(dplyr) #dplyr > 1.0.0

Y %>%
  mutate(across(where(~is.character(.) | is.factor(.)), 
                ~as.character(ifelse(. %in% c("N/A", "null", ""),  NA, .)))) %>%
  na.omit() -> Y