我有以下代码:
mat = matrix(c(1, 3, 4, 11, 13, 13), nrow = 2, ncol = 3, byrow = TRUE)
mat_grouped = apply(mat, 1, function(row) tapply(row, as.factor(row), length))
Run Code Online (Sandbox Code Playgroud)
输出如下列表:
[[1]]
1 3 4
1 1 1
[[2]]
11 13
1 2
Run Code Online (Sandbox Code Playgroud)
但是我希望输出显示为矩阵,其中列名称由矩阵中的所有值给出并按行分组:
1 3 4 11 13
[1,] 1 1 1 0 0
[2,] 0 0 0 1 2
Run Code Online (Sandbox Code Playgroud)
可以以这种形式获取我的数据吗?
你可以做:
table(row(mat), mat)
mat
1 3 4 11 13
1 1 1 1 0 0
2 0 0 0 1 2
Run Code Online (Sandbox Code Playgroud)
解释:
table()通过(交叉)制表值创建列联表。在这种情况下,有原始矩阵:
[,1] [,2] [,3]
[1,] 1 3 4
[2,] 11 13 13
Run Code Online (Sandbox Code Playgroud)
第二个行索引矩阵的形状与 生成的矩阵相同row(mat):
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
Run Code Online (Sandbox Code Playgroud)
该table()函数返回这两组值同时出现的计数。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |