2017-02-08 1 views
-1

현재 투표 데이터의 데이터 세트를 보유하고있어서 각 개인이 다수의 정책에 찬성표 또는 반대표로 투표를하거나 투표 당시 결석했습니다 특정 정책.Yes/No/Absent 데이터를 바이너리 매트릭스로 변환

전체적으로 23 개의 정책이 있지만 데이터를 이진으로 변환하는 방법을 알지 못합니다. "n"= "no", "y"= yes 및 "a"= 부재의 데이터 세트가 설정됩니다.

누구나 R을 사용하여 데이터를 변환 할 수 있다면 바이너리 매트릭스에 감사드립니다! 예를 들어

답변

0

은 :

m <- as.matrix(cbind(c('y','y','y'),c('n','n','n'),c('a','a','a'))) 
m[m == 'y'] <- 1 
m[m == 'n'] <- 0 
m[m == 'a'] <- NA 
+2

대신 'TRUE' 및'FALSE '를 사용해야합니다. 그리고 당연히 행렬은 당신의 접근 방식을 가진 문자 행렬이 될 것입니다. – Roland

+0

당신의 접근법에 따라 다음과 같이 할 수 있습니다 :'m [m == 'a'] <- NA; m [] <- m == 'y'; storage.mode (m) <- "논리적"' – Roland

1

model.matrix를 사용하여 수행 할 수 있습니다. 참고로이 작업은 R의 많은 경우에 자동으로 수행됩니다 (예 : 회귀 분석.

> set.seed(1) 
> (df <- data.frame(id=1:10,vote=sample(c("yes","no","absent"),10,replace=TRUE))) 
    id vote 
1 1 yes 
2 2  no 
3 3  no 
4 4 absent 
5 5 yes 
6 6 absent 
7 7 absent 
8 8  no 
9 9  no 
10 10 yes 
> model.matrix(~.-1,df) 
    id voteabsent voteno voteyes 
1 1   0  0  1 
2 2   0  1  0 
3 3   0  1  0 
4 4   1  0  0 
5 5   0  0  1 
6 6   1  0  0 
7 7   1  0  0 
8 8   0  1  0 
9 9   0  1  0 
10 10   0  0  1 
관련 문제