Конвертировать все пустые поля & помеченные "N / A" как NA в R - PullRequest
1 голос
/ 25 февраля 2020

Я новичок в машинном обучении и R, поэтому мой вопрос довольно прост: c:

Я импортировал набор данных, выполнил некоторые модификации и сохранил окончательный вывод в фрейме данных с именем df_final.

Теперь я хотел бы заменить все пустые поля и поля на «N / A», «n / a» в качестве NA, чтобы я мог использовать встроенные библиотеки na в R.

Любая помощь в этом контексте будет высоко ценится.

Ура! Вивек

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Я согласен, что эту проблему лучше всего решить при чтении, установив na.strings = c("", "N/A", "n/a") в read.table, как предложено @Darren Tsai. Если это больше не вариант, потому что вы уже обработали данные и , как я подозреваю, вы не хотите сохранить только полные случаи, как предлагает @Rui Barradas, тогда проблему можно решить следующим образом:

ДАННЫЕ :

df_final <- data.frame(v1 = c(1, "N/A", 2, "n/a", "", 3),
                       v2 = c("a", "", "b", "c", "d", "N/A"))
df_final
   v1  v2
1   1   a
2 N/A    
3   2   b
4 n/a   c
5       d
6   3 N/A

РЕШЕНИЕ :

Ввести NA в пустые поля вы можете сделать:

df_final[df_final==""] <- NA
df_final
    v1   v2
1    1    a
2  N/A <NA>
3    2    b
4  n/a    c
5 <NA>    d
6    3  N/A

Чтобы изменить другие значения на NA, вы можете использовать lapply и функцию:

df_final[,1:2] <- lapply(df_final[,1:2], function(x) gsub("N/A|n/a", NA, x))
df_final
    v1   v2
1    1    a
2 <NA> <NA>
3    2    b
4 <NA>    c
5 <NA>    d
6    3 <NA>
1 голос
/ 25 февраля 2020

Это двухшаговое решение.

  1. Заменить неверные значения действительными NA значениями.
  2. Сохранить complete.cases.

В базе R:

is.na(df1) <- sapply(df1, function(x) x %in% c("", "N/A", "n/a"))
df_final <- df1[complete.cases(df1), , drop = FALSE]
df_final
#  x y
#1 a u
#3 d v

Код создания данных.

df1 <- data.frame(x = c("a", "N/A", "d", "n/a", ""),
                  y = c("u", "", "v", "x", "y"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...