我在互联网上搜索类似的解决方案,但我找不到适合我的案例的具体解决方案。假设有以下数据框:
a = c(1, 1, 1, 2, 2)
b = c(2, 1, 1, 1, 2)
c = c(2, 2, 1, 1, 1)
d = c(1, 2, 2, 1, 1)
df <- data.frame(a = a, b = b, c = c, d = d)
df
看起来像这样:
a b c d
1 1 2 2 1
2 1 1 2 2
3 1 1 1 2
4 2 1 1 1
5 2 2 1 1
注意:在此示例中,我使用[1,2]
了一对值,但它可以是一组不同的值:[-1,1]
甚至两个以上的可能值:[-1,1,2]
.
现在我想要一个矩阵,其中每个[i,j]
元素将代表行数,其值为1
columni
和j
。对于这种特殊情况,我们有(显示上对角线,因为它是对称的):
a b c d
a 3 2 1 1
b 3 2 1
c 3 2
d 3
对角线应计算1
给定列中具有值的行数。在这种情况下,所有列都具有相同数量的 value 1
。格式应该类似于cor()
函数(相关矩阵)。
我试图使用table()
(也crosstab
来自descr
包),但它通过成对的列显示信息。
可以通过手动计算1
每对列的出现(即:)nrow(df[df$a==1 & df$b==1,])=2
然后放入一个矩阵来完成,但我想知道是否有一个内置函数可以简化这个过程。