我尝试使用以下代码使用ifelse语句对dataframe df中的列进行离散化。列aar包含从0到12的十进制值和NA。我检查数字值是否如下所示并将其分配给类别。
> df= df%>% mutate(arr2= ifelse( grepl("NA", aar)==T, "NA",
> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar))==1,
> "1-1.99", ifelse(as.numeric(aar)==2, "2-2.99",
> ifelse(as.numeric(aar)==3, "3-3.99", ifelse(as.numeric(aar)==4,
> "4-4.99", ifelse(as.numeric(aar)==5, "5-5.99",
> ifelse(as.numeric(aar)==6, "6-6.99", ifelse(as.numeric(aar)==7,
> "7-7.99", ifelse(as.numeric(aar)==8,
> "8-8.99",ifelse(as.numeric(aar)==9, "9-9.99",
> ifelse(as.numeric(aar)==10, "10-10.99", ifelse(as.numeric(aar)==11,
> "11-11.99", "12" )))))))))))))
但是我收到以下错误,
Error: unused arguments ("1-1.99", ifelse(as.numeric(c("0", "NA", "0",......
我做错了什么?有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
您在第二次调用ifelse
时过早地关闭了一个括号:
> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar))==1,
应该是:
> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar)==1,
我不是像@akrun这样的R大师,但必须有更好的方法来实现你想要做的事情,而不是嵌套12 ifelse
个电话。您当前的方法使代码难以阅读,并且更难调试(因此您的问题)。