R汇总变量的交集

时间:2017-03-17 12:35:49

标签: r

数据转换再一次暗示着我。我已经尝试过聚合,xtab,apply函数,gmodels :: CrossTable各种各样但似乎没什么用。

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

例如:

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),值是交叉点的总和。

例如:

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 个答案:

答案 0 :(得分:1)

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

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