我想通过列找到矩阵的频率.例如,对于下面的矩阵x
x <- matrix(c(rep(1:4,3),rep(2:5,2)),4,5)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 2 2
[2,] 2 2 2 3 3
[3,] 3 3 3 4 4
[4,] 4 4 4 5 5
Run Code Online (Sandbox Code Playgroud)
现在如何找到每个唯一列的频率并创建一个矩阵,每列是x的唯一列,最后一行作为矩阵x的频率添加
#freqmatrix
[,1] [,2]
[,1] 1 2
[,2] 2 3
[,3] 3 4
[,4] 4 5
[,5] 3 2
Run Code Online (Sandbox Code Playgroud)
这是一个避免将矩阵转换为列表列表的解决方案,但它也有点乱:
x.unique <- unique(x, MARGIN = 2)
freq <- apply(x.unique, MARGIN = 2,
function(b) sum(apply(x, MARGIN = 2, function(a) all(a == b)))
)
rbind(x.unique, freq)
[,1] [,2]
1 2
2 3
3 4
4 5
freq 3 2
Run Code Online (Sandbox Code Playgroud)