假设我有一个矩阵
>tmp
[,1] [,2] [,3]
[1,] 0 0 3
[2,] 0 2 0
[3,] 1 0 0
[4,] 1 0 0
[5,] 0 2 0
[6,] 1 0 0
[7,] 0 0 3
[8,] 0 0 3
[9,] 0 2 0
我现在想计算矩阵中的变化次数,所以假设在第一行我有一个 3,然后它在下一行变成 2,依此类推。我想将这些更改添加到这样的表中:
1 2 3
1 1 1 1
2 2 0 0
3 0 2 1
所以它说 1 变为 1, 1 次。1 变为 2, 1 次。2 变为 1、2 次,以此类推。我已经尝试考虑了一段时间,但我想不出一个聪明的方法。我正在考虑table()
在 R中使用该函数,但我不知道如何使用。有没有人对这个问题有一个聪明的解决方案?
谢谢!
t2 = as.vector(t(tmp))
t2 = t2[t2 != 0]
trans = data.frame(from = t2[-length(t2)], to = t2[-1])
with(trans, table(from, to))
# to
# from 1 2 3
# 1 1 1 1
# 2 2 0 0
# 3 0 2 1
当然,您可以完全跳过数据框并跳转到table(from = t2[-length(t2)], to = t2[-1])
.
使用这些数据:
tmp = as.matrix(read.table(text = " 0 0 3
0 2 0
1 0 0
1 0 0
0 2 0
1 0 0
0 0 3
0 0 3
0 2 0"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句