2017-02-08 5 views
-1

На данный момент у меня есть набор данных для голосования, в которых каждый человек голосовал по целому ряду политик либо да, либо нет, либо они отсутствовали во время голосования этого конкретной политики.Преобразование Да/Нет/Отсутствующие данные в двоичную матрицу

В целом у меня есть 23 политики, но я понятия не имею, как преобразовать данные в двоичные. Набор данных настроен таким образом, что, очевидно, «n» = нет, «y» = да и «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) <- "logical" – 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 
Смежные вопросы