【问题标题】:Using ifelse and mutate to categorise a new column by previous column name使用 ifelse 和 mutate 按前一列名称对新列进行分类
【发布时间】:2020-04-21 02:06:26
【问题描述】:

我遇到了一些问题,我需要对美国各州进行分类,将五个州分为两组,分别为富国或穷国,其他各州为中等。我可以使用此代码简单地将其归类为丰富或不丰富:

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

虽然我正在努力弄清楚如何将其他五个状态(未包含在上述代码中)分配为被认为是差的。

我对 R 非常陌生,不确定如何在富人、中等人和穷人这三个条件下做到这一点。我似乎一次只能做两个。

需要添加到我的代码中以将路易斯安那州、新墨西哥州、阿肯色州、密西西比州、西弗吉尼亚州分类为贫困州。

【问题讨论】:

    标签: r if-statement dplyr


    【解决方案1】:

    您可以使用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'))
    

    【讨论】:

    • 非常感谢您成功了!我想我可以看到我在不同的路线上跑错了,谢谢。
    【解决方案2】:

    使用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')][]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多