假设我有以下矩阵 mat
,它是级别 A
、B
和 C 的二进制指示矩阵
对于一组 5 个观察值:
mat <- matrix(c(1,0,0,
1,0,0,
0,1,0,
0,1,0,
0,0,1), ncol = 3, byrow = TRUE)
colnames(mat) <- LETTERS[1:3]
> mat
A B C
[1,] 1 0 0
[2,] 1 0 0
[3,] 0 1 0
[4,] 0 1 0
[5,] 0 0 1
我想将其转换为单个因素,以便输出相当于 fac
定义为:
> fac <- factor(rep(LETTERS[1:3], times = c(2,2,1)))
> fac
[1] A A B B C
Levels: A B C
如果您从 mat
的列名中获取标签,而是一组数字代码(例如 c(1,1,2,2,3)
)也可以作为所需的输出接受。
最佳答案
使用矩阵乘法的优雅解决方案(迄今为止最短的解决方案):
as.factor(colnames(mat)[mat %*% 1:ncol(mat)])
关于r - 如何从二元指标矩阵创建因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727315/