代码之家  ›  专栏  ›  技术社区  ›  buzz

在dplyr包中,可以根据不同列中的值对列进行变异吗

  •  1
  • buzz  · 技术社区  · 2 年前

    audit_cat将是一个二分法字符串变量,范围为0-2 ~“非危险”和3-12 ~“危险”,对于“雌性”和“雄性”分别为0-3=“非危险”和4-12。

    如果audit_cat同时包含雌性和雄性分数,这将是理想的。

    df2<- df2%>% 
       filter(gender == "Male") %>%
       mutate(audit_score_cat =
                case_when(audit_score >= 0 & audit_score <= 3 ~ "Not hazardous",
                          audit_score >=4 & audit_score <= 12 ~ "Hazardous"))
    

    有没有一种方法可以基于两种不同的评分系统创建新的df column audit\u cat,这取决于性别?

    非常感谢。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Darren Tsai    2 年前

    您可以列出“不危险”的条件,并将其余条件指定为“危险”。

    df2 %>%
      mutate(audit_score_cat = case_when(
        gender ==    "Male" & between(audit_score, 0, 3) ~ "Not hazardous",
        gender == "Females" & between(audit_score, 0, 2) ~ "Not hazardous",
        TRUE                                             ~ "Hazardous"
      ))