R Data Frame - конвертировать все <NA>в пробелы ("") для символьных столбцов - PullRequest
0 голосов
/ 29 января 2020

Я ищу решение для преобразования всех в пустые ('') для всех символьных столбцов во фрейме данных. Я бы предпочел решение Base R. Я пробовал решение, описанное в ( Установка в пустое значение ), но для этого требуется преобразовать весь фрейм данных как фактор, и это создает проблему для чисел c столбцов, например

df <- data.frame(x=c(1,2,NA), y=c("a","b",NA))

Чтобы преобразовать числа c NA в 0

df[is.na(df)] <- 0   

Чтобы преобразовать символ в пробел ("") - он преобразует все столбцы в символ.

df <- sapply(df, as.character)
df[is.na(df)] <- " "

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Создайте свой фрейм данных с помощью stringsAsFactors = FALSE

df <- data.frame(x=c(1,2,NA), y=c("a","b",NA), stringsAsFactors = FALSE)

Поиск столбцов символов

cols <- sapply(df, is.character)

Превратите их в пустые

df[cols][is.na(df[cols])] <- ' '
df

#   x y
#1  1 a
#2  2 b
#3 NA  
0 голосов
/ 29 января 2020

Возможно, это не самый элегантный способ, но, используя dplyr, вы можете преобразовать все факторные столбцы в символьные столбцы, используя mutate_if, а затем заменить все NA на "" в символьных столбцах, используя ifelse в mutate_if:

library(dplyr)
df %>% mutate_if(is.factor, ~as.character(.)) %>%
  mutate_if(is.character, ~ifelse(is.na(.)," ",.))

   x y
1  1 a
2  2 b
3 NA  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...