2016-06-23 3 views
1

Я попытался дискретизировать столбец в dataframe df, используя операторы ifelse, используя следующий код. Столбец aar содержит десятичные значения от 0 до 12 и NA. Я проверяю числовое значение и присваиваю его категориям, как показано ниже.Ошибка: неиспользуемые аргументы в 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, 

Я не R-гуру, как @akrun, но должен быть лучшим способом добиться того, что вы пытаетесь сделать, вместо гнездования 12 ifelse звонков. Ваш текущий подход делает код трудным для чтения и сложнее отлаживать (следовательно, ваш вопрос).

+1

Огромное спасибо Тиму – andy

Смежные вопросы