Преобразуйте категорическое «другое» значение в NA в кадре данных, используя dplyr - PullRequest
2 голосов
/ 25 апреля 2020

trial <- data.frame(c("A", "B", "C", "other"), c("a","b","Others","d"))

В кадре данных есть 2 категориальные переменные (атрибуты). Я хочу перекодировать значение «другое» как NA. Я перехожу по ссылке здесь: https://cran.r-project.org/web/packages/naniar/vignettes/replace-with-na.html enter image description here

na_strings <- c("other", "Others")
trial %>%
  replace_with_na_all(condition = ~.x %in% na_strings)

Однако значение «other» меняется на NA, но все остальные символы превратились в цифры. Я хочу, чтобы остальные значения оставались символическими. Что мне делать? Заранее спасибо.

Ответы [ 2 ]

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

Вот простое решение dplyr:

library(dplyr)
library(naniar)

trial %>%
  mutate_if(is.factor,as.character) %>%
  replace_with_na_all(condition = ~.x %in% na_strings)

Вам нужно просто изменить класс переменной от фактора к символу перед функцией replace_with_na_all.

0 голосов
/ 25 апреля 2020

Вы можете использовать базу R:

trial[sapply(trial, `%in%`, na_strings)] <- NA

или только dplyr, чтобы сделать это:

library(dplyr)
trial %>% mutate_all(~replace(., . %in% na_strings, NA))

#  col1 col2
#1    A    a
#2    B    b
#3    C <NA>
#4 <NA>    d

data

trial <- data.frame(col1 = c("A", "B", "C", "other"), 
                    col2 = c("a","b","Others","d"))
...