Почему я получаю дополнительную категорию, когда пытаюсь сгруппировать их? - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь сгруппировать некоторые категории рабочих классов в наборе данных о доходах для взрослых на основе существующих значений с использованием gsub.Однако в итоге я получаю две версии категории «Другие неизвестные».Может кто-нибудь помочь мне понять почему?НС / нули есть?в полях.Заранее спасибо!

Ниже мой код

total_data <- read.csv("adult_data_set.csv")

levels(total_data$workclass)[1] <- "Unknown"
total_data$workclass <- gsub("Federal-gov", "Public Sector",total_data$workclass)
total_data$workclass <- gsub("Local-gov", "Public Sector", total_data$workclass)
total_data$workclass <- gsub("State-gov", "Public Sector", total_data$workclass)
total_data$workclass <- gsub("Self-emp-inc", "Self Employed", total_data$workclass)
total_data$workclass <- gsub("Self-emp-not-inc", "Self Employed", total_data$workclass) 
total_data$workclass <- gsub("Never-worked", "Other-Unknown", total_data$workclass) #this is part of the 17 count
total_data$workclass <- gsub("Without-pay", "Other-Unknown", total_data$workclass) #this is part of the 17 count
total_data$workclass <- gsub("^Unknown", "Other-Unknown", total_data$workclass)

total_data$workclass <- as.factor(total_data$workclass)

Вот результат, который я получаю

 Other-Unknown        Private  Public Sector  Self Employed  Other-Unknown 
            17          22333           4335           3716           1859 

Я ожидаю

 Other-Unknown        Private  Public Sector  Self Employed   
            1876          22333           4335           3716                

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Появляется, что в вашем CSV-файле поля разделены запятой и пробелом.

Таким образом, ваши уровни Other-Unknown не были одинаковыми, некоторые были Other-Unknown, тогда как другие были whitespaceOther-Unknown.

В этом случае вы можете добавить опцию strip.white=TRUE к команде read.csv, это удалит пробелы в начале и в конце ваших полей.

0 голосов
/ 17 февраля 2019

Посмотрите, делает ли код ниже то, что вы хотите.Для свертывания уровней факторов используется пакет forcats function fct_collapse.
Это untested , поскольку в вопросе нет примера набора данных.

library(forcats)

all_workclass <- levels(total_data$workclass)
public <- c("Federal-gov", "Local-gov", "State-gov")
selfemp <- c("Self-emp-inc", "Self-emp-not-inc")
other <- setdiff(all_workclass, c(public, selfemp))

total_data$workclass <- fct_collapse(total_data$workclass,
  'Public Sector' = public,
  'Self Employed' = selfemp,
  'Other-Unknown' = other
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...