r - 如何从二元指标矩阵创建因子?

标签 r

假设我有以下矩阵 mat,它是级别 ABC 的二进制指示矩阵 对于一组 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/

相关文章:

r - uniqueN 在 j 中的条件下返回错误结果

pdf - 使用 R 中的脚本生成 pdf 时出错

r - 如何将转换后的回归绘制回原始比例?

r - 使用 R 将数据集中的多列合并为一列

r - ggplot2 中 facet_wrap() 的手动中断

r - 如何制作出色的 R 可重现示例

使用 Sparklyr 包时,R 未检测到安装的最新 Java 版本 (1.8)

r - 更改 googleVis 时间轴图表上的轴限制

r - 使用 roxygen2 记录新的 "+"S3 方法时出现问题

r - 从多边形子集中提取栅格内值的百分比分布