将是/否/缺少数据转换为二进制矩阵

时间:2017-02-08 15:40:21

标签: r matrix binary

目前我有一个投票数据的数据集,其中每个人投票赞成一些政策是或否,或者在该特定政策投票时他们缺席。

总体而言,我有23条政策,但我不知道如何将数据转换为二进制。 数据集的设置方式显然是" n" =不," y" =是和" a" =缺席

如果有人可以帮助我如何将R中的数据转换为二进制矩阵,我将不胜感激!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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