我想在变量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”,没有默认值“
我已经检查了其他类似的问题,但这并没有解决我的问题。
答案 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))