R求和变量的交集


R Summing intersections of variables

数据转换再一次暗指我。我已经尝试过聚合、xtab、应用函数、gmodels::CrossTable 各种但似乎没有任何效果。

我有一个包含四列的表,例如 A:D,每列一个数字二项式变量 (0, 1)。

例如:

1
2
3
4
x <- data.frame(A = c(0, 1, 1, 0, 1),
                B = c(1, 1, 0, 1, 0),
                C = c(0, 1, 1, 0, 1),
                D = c(1, 0, 1, 0, 1))

我想要一个输出,其中行和列都是变量 (A:D),值是交叉点的总和。

例如:

1
2
3
4
5
output <- data.frame(A = c(3, 1, 3, 2),
                     B = c(1, 3, 1, 1),
                     C = c(3, 1, 3, 2),
                     D = c(2, 1, 2, 3))
rownames(output) <- c("A","B","C","D")

例如,如果 A 列中有 3 个观测值,则输出中 AA 的交集将为 3。如果变量 B 中也有 1 个 A 观测值,则输出表中 AB 的交集将显示为 1交叉口 BA.

希望这是有道理的。真的很烦我怎么做。


你可以从矩阵代数中得到这个。

1
2
3
4
5
6
7
M = as.matrix(x)
t(M) %*% M
  A B C D
A 3 1 3 2
B 1 3 1 1
C 3 1 3 2
D 2 1 2 3