2016-06-23 12 views
1

Ich habe versucht, eine Spalte im Dataframe df mit ifelse Anweisungen mit dem folgenden Code zu diskretisieren. Die Spalte aar enthält Dezimalwerte von 0 bis 12 und NAs. Ich überprüfe, ob der numerische Wert und ordnen Sie es den Kategorien wie folgt zu.Fehler: unbenutzte Argumente in ifelse in 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"))))))))))))) 

Aber ich folgende Fehlermeldung erhalten,

Error: unused arguments ("1-1.99", ifelse(as.numeric(c("0", "NA", "0",...... 

Was mache ich falsch? Kann mir bitte jemand helfen, das Problem zu beheben?

+1

Verwenden Sie stattdessen 'cut()' oder 'factor()'. – zx8754

+0

Bitte lesen Sie die Informationen über [wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) und wie man ein [reproduzierbares Beispiel gibt] (http://stackoverflow.com/questions/5963269). Dies wird es anderen sehr erleichtern, Ihnen zu helfen. – zx8754

Antwort

4

Sie schließen vorzeitig eine Klammer in Ihrem Sekunden Aufruf ifelse:

> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar))==1, 

sollte sein:

> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar)==1, 

Ich bin kein Guru R wie @akrun, aber es muss ein besserer Weg sein, um das zu erreichen, was Sie zu tun versuchen, anstatt 12 ifelse Aufrufe zu verschachteln. Ihr aktueller Ansatz macht den Code schwer lesbar und schwieriger zu debuggen (daher Ihre Frage).

+1

Vielen Dank Tim – andy