Заменить NA в кадре данных факторными переменными - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы создать функцию для замены NA на текст «NR» в факторных переменных фрейма данных.

Я нашел следующий код в Интернете, который отлично работает:

i <- sapply(data_5, is.factor) # Identify all factor variables in your data
data_5[i] <- lapply(data_5[i], as.character) # Convert factors to character variables
data_5[is.na(data_5)] <- 0 # Replace NA with 0
data_5[i] <- lapply(data_5[i], as.factor) # Convert character columns back to factors

Но я бы хотел преобразовать этот код в функцию с именем "remove_na_factor". Я попробовал, как показано ниже:

remove_na_factor <- function(x){
  i <- sapply(x, is.factor) # Identify all factor variables in your data
  x[i] <- lapply(x[i], as.character) # Convert factors to character variables
  x[is.na(x)] <- "NR" # Replace NA with NR
  x[i] <- lapply(x[i], as.factor) # Convert character columns back to factors

}

Когда я запускаю функцию на фрейме данных со значениями NA, ничего не происходит ... Заранее благодарим за помощь.

1 Ответ

1 голос
/ 27 июня 2019

Просто добавьте return(x) в конце вашей функции:

remove_na_factor <- function(x){
  #your function body
  return(x)
}

Вы также можете получить тот же результат, используя tidyverse подход

library(tidyverse)
x %>% 
  mutate_if(is.factor, as.character) %>%   # Convert factors to character variables
  mutate_if(is.character, replace_na, "NR") %>% # Replace NA with NR
  mutate_if(is.character, as.factor)       # Convert character columns back to factors  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...