2012-09-04 8 views
0

그래서 ... 많은 범주가있는 변수를 가진 큰 데이터 집합이 있습니다. 그 범주 중 일부를 하나로 묶는 새로운 변수를 만들고 싶습니다.많은 범주의 더미 변수 생성

조건문을 사용하면 그럴 수 있지만 카테고리의 양을 고려할 때 그 때 한 줄로 이동하는 데 영원히 걸릴 것입니다. 또한 원래 변수는 숫자이지만 값 자체는 무작위이므로 논리적 또는 범위 문을 사용할 수 없습니다.

많은 특정 값을 기반으로 조건부 변수를 만드는 방법은 무엇입니까?

나는 다음을 시도했지만 성공하지는 못했다. 다음은 하나의 그룹으로 분류하려는 여러 카테고리의 예입니다.

classes <- c(549,162,210,222,44,96,62,208,525,202,149,442,427, 
     564,423,106,422,546,205,560,127,536,34,261,568, 
     366,524,401,548,95,156,8,528, 430,527,556,203,554,523, 
     501,530,55,252,585,19,540,71,204,502,504, 196,436,48, 
     102,526,201,521,23,558,552,118,416,117,216,510,494, 
     516,544,518) 

이렇게 나에게는 꽤 직관적 이었지만 작동하지 않습니다.

df$chem<- cbind(ifelse(df$class == classes ,1,0)) 

도없이 미안에게 초보자 대답, 이것은 아마 할 열심히 아니지만, I've이 특정 문제에 대한 해결책을 찾고 나는 그것을 찾을 수가 할수 없어. 내가 뭘 놓치고 있니? 감사!

+0

의 중복 가능성 http://stackoverflow.com/questions/9406289/automatic-dummy-variables- in-r) – mnel

+0

더미 변수를 만드는 것이 좋은 질문입니다. 많은 일을 위해 그것은 당신을 위해 그들을 만들 것입니다. – Dason

+0

OP가 찾고있는 'cut'이 아닌가요? –

답변

5

당신은 %in%를 찾고 있습니다하지 ==

예를 들어

df$chem <- cbind(ifelse(df$class %in% classes ,1,0)) 

또는 모든 범주에 대한 개별 더미 변수를 원하는 경우 숫자 변환

df$chem <- as.numeric(df$class %in% classes) 

에 논리를 사용하여 df$class 다음을 사용할 수 있습니다. (권장 패키지로 제공되는) 패키지 nnet210 함수

library(nnet) 

class_ind <- class.ind(df$class) 
# add if you want to combine with the original 
df_ind <- do.call(cbind, list(df, class.ind(df$class)) 
[R 자동 더미 변수 (
+0

그 트릭을 했어! 감사!! 나는 모든 카테고리에 대해 인형을 만들고 싶다. 그래서 nnet에 시도해 보겠다. 유용 할 것 같은데. –

+0

고마워,하지만 위의 @ Dason의 의견에 유의하십시오. – mnel