Использование ifelse и mutate для категоризации нового столбца по имени предыдущего столбца - PullRequest
0 голосов
/ 21 апреля 2020

У меня возникают проблемы, когда мне нужно классифицировать штаты США, назначая две группы из пяти штатов как богатые или бедные, а все остальные штаты - как средние. Я могу просто классифицировать как богатый или не использовать этот код:

twoe.data.frame <-
  mutate(us_contagious_diseases,
         wealth = ifelse(
           state == "Maryland" | state == "New Jersey" | state == "hawaii" |
             state == "Massachusetts" | state == "Connecticut",
           "rich", "middle"))

Пока я пытаюсь выяснить, как назначить другие пять состояний (не включенных в вышеприведенный код), которые считаются плохими.

Я очень плохо знаком с R и не уверен, как это сделать в трех условиях: богатый, средний и плохой. Кажется, я могу делать только два раза.

Что нужно добавить в мой код, чтобы классифицировать штаты Луизиана, Нью-Мексико, Арканзас, Миссисипи, Западная Вирджиния как бедные.

Ответы [ 2 ]

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

Вы можете использовать case_when для назначения wealth на основе имени состояния.

library(dplyr)

us_contagious_diseases %>%
    mutate(wealth = case_when(state %in% c('Maryland', 'New Jersey', 'hawaii', 'Massachusetts', 'Connecticut') ~ 'rich', 
                              state %in% c('Louisiana', 'New Mexico', 'Arkansas', 'Mississippi', 'West Virginia') ~ 'poor',
                              TRUE ~ 'middle'))
0 голосов
/ 22 апреля 2020

С data.table мы можем использовать fcase

library(data.table)
setDT(us_contagious_diseases)[, wealth := fcase(state %chin% 
   c('Maryland', 'New Jersey', 'hawaii', 'Massachusetts', 'Connecticut'), 'rich',
  state %in% c('Louisiana', 'New Mexico', 'Arkansas', 'Mississippi', 'West Virginia'),  'poor' , 
       default = 'middle')][]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...