2016-06-23 11 views
1

次のコードを使用してifelseステートメントを使用してデータフレームdfの列を離散化しようとしました。列aarには、0から12までの10進値とNAsが含まれます。私は数値をチェックし、以下のようにカテゴリに割り当てます。私が間違っているのは何エラー:ifelseのRの未使用引数

> 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",...... 

?誰でも親切に私を助けてくれますか?

+1

代わりに 'cut()'または 'factor()'を使用してください。 – zx8754

+0

[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)と[再現可能な例を与える方法](http://stackoverflow.com/questions)の情報をお読みください。/5963269)。これは他の人があなたを助けることをはるかに容易にします。 – zx8754

答えて

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コールをネストするのではなく、自分がやろうとしていることを達成するためのよりよい方法になります。あなたの現在のアプローチは、コードを読みにくくし、デバッグするのをより困難にします(したがってあなたの質問)。

+1

ありがとうTim – andy