计算变量之间相交的相关矩阵

时间:2019-03-01 13:46:20

标签: r

我有一个ID大的数据集,还有一些二进制变量。我想创建一个计算交叉点的相关矩阵,即如果var1和var2的ID分别为20和1,则var1,var2为20(与var2,var1相同),对角线就是sum(col)

例如:

ID <- c(100,101,102,104)
var1 <- c(1,1,1,1)
var2 <- c(1,0,0,1)
var3 <- c(1,1,0,0)
var4 <- c(0,0,0,1)

我希望输出为:

vars var1 var2 var3 var4
var1    4    2    2    1
var2    2    2    1    1
var3    2    0    2    0
var4    1    1    0    1

1 个答案:

答案 0 :(得分:2)

m列中形成一个矩阵var,并将其转置值自身相乘,即t(m) %*% m或使用crossprod,如下所示:

m <- cbind(var1, var2,var3, var4)
crossprod(m)

给予:

     var1 var2 var3 var4
var1    4    2    2    1
var2    2    2    1    1
var3    2    1    2    0
var4    1    1    0    1