2

我有一个带有 ID 的大型数据集和一些二进制变量。我想创建一个计算交叉点的相关矩阵,即。如果 var1 和 var2 有 20 个 ID,每个 ID 为 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
4

1 回答 1

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
于 2019-03-01T13:59:29.837 回答