缺少参数“no”,没有默认的ifelse

时间:2018-06-12 21:20:04

标签: r

我想在变量y的不同类别上创建另一个二进制变量x条件。

如果变量x是“a”或“b”或“c”,我希望y等于1,如果x是“d”或“e” y=0

我的代码如下

data$y <- ifelse(data$x == "a" | data$x == "b" |data$x == "c", 1, 
ifelse(data$x == "d" | data$loan_status == "e" ,0))

我收到错误:

  缺少

参数“no”,没有默认值“

我已经检查了其他类似的问题,但这并没有解决我的问题。

1 个答案:

答案 0 :(得分:3)

ifelse需要3个参数,第一个称为test,第二个称为yes,第三个称为no

你的内部ifelse语句只有两个参数,这还不够:

ifelse(data$x == "d" | data$loan_status == "e", 0)

因此缺少第三个参数no。我建议将其设置为类似NA的内容,这样任何不符合您条件的内容都将设置为缺失值NA

作为旁注,%in%函数比许多OR更好用。我会用两种方法之一重写你的代码:

# this is nice and simple if you are sure data$x only takes values
# a,b,c,d,e
ifelse(data$x %in% c("a", "b", "c"), 1, 0)

# this is good if there is even a tiny chance data$x has other values
# it will flag the other values as NA
ifelse(data$x %in% c("a", "b", "c"), 1, ifelse(data$x %in% c("c", "d"), 0, NA))