使用ifelse()将dplyr中的布尔值列突变为1和0,得到的值大于1

时间:2020-06-21 02:10:30

标签: r dplyr boolean tidyverse mutate

我的数据框中有一列提示,并且将尝试进行逻辑回归以预测提示是留下还是现在。

尝试使用mutate在我的数据中创建具有1和0的布尔列。 1代表小费,0代表小费。

我的代码非常简单:

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

作为输出,我具有大于1的值,例如,tip = 7.00转换为布尔值7,这不是我期望的值。

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 个答案:

答案 0 :(得分:3)

您的代码不起作用,但是我想您正在尝试执行以下操作:

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始终为0或正值,则根本不需要任何ifelse

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

或使用sign返回0表示0值,返回1表示大于0的任何数字。

data$boolean <- sign(data$Tips)