Как обрабатывать пропущенные значения в столбце логического типа в R - PullRequest
0 голосов
/ 14 мая 2019

У меня есть столбец логического типа Self_Employed, значения как TRUE и FALSE. В нем отсутствуют значения, что означает «Сотрудник», а не работающий не по найму человек. Я хотел бы вменять категорию «Отсутствует» в столбце

class(df$Self_Employed)
[1] "logical"

levels(df$Self_Employed)
NULL

sum(is.na(df$Self_Employed))
[1] 210

table(df$Self_Employed)
 FALSE   TRUE 
  1561    271

получая класс как "логический", уровни как NULL и сумму пропущенных как 210, таблица показывает итоговое значение true и false.

вменять пропавшим Сначала я конвертирую в множитель, затем вменяю пропущенное, но не заполняющееся, показывая только NA и уровни только с TRUE и FALSE

df$Self_Employed <- as.factor(df$Self_Employed)
levels(df$Self_Employed)[levels(df$Self_Employed)=="" ] <- "SE_Missing"

levels(df$Self_Employed)
[1] "FALSE" "TRUE" 

Уровни показывают только True и False, а is.na показывает те же 210

df$Self_Employed <- factor(df$Self_Employed,levels=c('FALSE','TRUE',''),labels=c('Yes','No','SE_Missing'))

Как восполнить недостающий фактор

Мне нужно преобразовать True в «Да», False в «Нет», NA в «SE_Missing»

1 Ответ

2 голосов
/ 14 мая 2019

Не думаю, что вам нужно поворачивать колонку к факторам.Вот пример использования фиктивного набора данных

library(dplyr)
df %>%
  mutate(b = case_when(b ~ "Yes", 
                       !b ~ "No", 
                       TRUE ~ "SE_Missing"))

#  a          b
#1 1        Yes
#2 2        Yes
#3 3         No
#4 4 SE_Missing
#5 5         No
#6 6 SE_Missing

Или использования вложенного ifelse, который также может быть интегрирован в mutate

with(df, ifelse(is.na(b), "SE_Missing", ifelse(b, "Yes", "No")))
#[1] "Yes"    "Yes"    "No"    "SE_Missing" "No"    "SE_Missing"

data

df <- data.frame(a = 1:6, b = c(TRUE, TRUE, FALSE, NA, FALSE, NA))

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