2016-06-23 2 views
1

다음 코드를 사용하여 ifelse 문을 사용하여 데이터 프레임 df의 열을 이산하려고했습니다. 열 aar에는 0 - 12의 십진수 값과 NAs가 들어 있습니다. 나는 숫자 값을 확인하고 아래의 범주에 그것을 할당합니다. 내가 잘못 뭐하는 거지오류 : R에서 ifelse의 사용되지 않는 인수

> 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 전문가는 아니지만이해야호출을 중첩하는 대신 수행하려는 작업을 수행하는 더 좋은 방법입니다. 현재의 접근 방식은 코드를 읽기 어렵게 만들고 디버깅하기가 더 어렵습니다 (따라서 사용자의 질문).

+1

Tim 감사합니다. – andy

관련 문제