将R因子转换为二进制矩阵值

BBD*_*Sys 12 statistics r matrix

我想将我的数据帧转换为矩阵,将单个因子列扩展为多个,并根据因子分配1/ 0.例如

C1 C2 C3
A  3  5
B  3  4
A  1  1
Run Code Online (Sandbox Code Playgroud)

应该变成类似的东西

C1_A C1_B C2 C3
1      0  3  5
0      1  3  4
1      0  1  1
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?我试过了data.matrix,as.matrix但没有回复我想要的东西.它们为单个因子列分配"整数"值,没有扩展.

Sve*_*ein 16

假设dat是您的数据框:

cbind(dat, model.matrix( ~ 0 + C1, dat))

  C1 C2 C3 C1A C1B
1  A  3  5   1   0
2  B  3  4   0   1
3  A  1  1   1   0
Run Code Online (Sandbox Code Playgroud)

此解决方案适用于任意数量的因子级别,无需手动指定列名称.

如果要排除列C1,可以使用以下命令:

cbind(dat[-1], model.matrix( ~ 0 + C1, dat))
Run Code Online (Sandbox Code Playgroud)

  • OP似乎想要`model.matrix(〜.+ 0,dat)`. (10认同)