给出一个长度为6的3个唯一数字的数组,例如:
C(1,1,1,2,3,3)
如何构建以下6x3矩阵:
[1, 0 , 0]
[1, 0 , 0]
[1, 0 , 0]
[0, 1 , 0]
[0, 0, 1]
[0, 0, 1]
一种天真的方式是:
V = C(1,1,1,2,3,3)
Z = matrix(0,6,3)
for (i in 1:6) {Z[i, V[i]] = 1}
但是有没有适合这种类型的班轮呢?
给出一个长度为6的3个唯一数字的数组,例如:
C(1,1,1,2,3,3)
如何构建以下6x3矩阵:
[1, 0 , 0]
[1, 0 , 0]
[1, 0 , 0]
[0, 1 , 0]
[0, 0, 1]
[0, 0, 1]
一种天真的方式是:
V = C(1,1,1,2,3,3)
Z = matrix(0,6,3)
for (i in 1:6) {Z[i, V[i]] = 1}
但是有没有适合这种类型的班轮呢?
我们可以在base R
中使用model.matrix
model.matrix(~ . - 1, 数据.frame(v1 = factor(v1)))
-输出
v11 v12 v13
1 1 0 0
2 1 0 0
3 1 0 0
4 0 1 0
5 0 0 1
6 0 0 1
或使用fastDummies
中的dummy_cols
library(fastDummies)
dummy_cols(v1)[-1]
.数据_1 .数据_2 .数据_3
1 1 0 0
2 1 0 0
3 1 0 0
4 0 1 0
5 0 0 1
6 0 0 1
v1 <- c(1,1,1,2,3,3)