代码之家  ›  专栏  ›  技术社区  ›  Anakin Skywalker

使用ifelse()在dplyr中对1和0的布尔列进行变异,得到大于1的值

  •  0
  • Anakin Skywalker  · 技术社区  · 6 年前

    我的数据框架中有一个列有提示,我将尝试运行一个logistic回归来预测提示是留下还是现在。

    mutate 1 0 不给小费。

    我的代码很简单:

    data %>% mutate(ifelse((Tips > 0, 1), ifelse(Tips == 0, 0))) 
    

    Tips boolean
    1.75    1
    2.00    2
    0.00    0
    2.35    2
    0.00    0
    1.00    1
    0.00    0
    0.00    0
    7.00    7
    0.00    0
    

    我错过了什么?谢谢!

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ronak Shah    6 年前

    你的代码不起作用,但我猜你是想这样做:

    library(dplyr)
    data %>% mutate(boolean = ifelse(Tips > 0, 1, ifelse(Tips == 0, 0, NA)))
    

    或者如果你有很多条件检查使用 case_when 比较干净。

    data %>% mutate(boolean = case_when(Tips > 0 ~ 1, 
                                        Tips == 0 ~ 0))
    

    假设 Tips ifelse

    data$boolean <- +(data$Tips > 0)
    

    或使用 sign

    data$boolean <- sign(data$Tips)