问题描述
我有一个在不同研究中发生的变量列表。如果给定研究中存在每个变量,则用 1 编码,如果不存在则用 0 编码,表格如下所示:
var1 var2 var3
study1 1 0 0
study1 1 0 1
study1 0 0 0 etc.
我的目标是创建一个表格,其中包含每个变量与其他每个变量一起出现的次数,即如下所示:
var1 var2 var3
var1 - 2 4
var2 2 - 1
var3 4 0 - etc.
如何在 R 中执行此操作?
我试图寻找指南或类似的问题,但结果是空的。
预先感谢您的帮助!
解决方法
以下代码计算每个变量与其他每个变量一起出现的次数,并将它们放入对称矩阵中。对角线条目为 -1。
df=data.frame(var1=c(1,1,0),var2=c(1,var3=c(0,1))
df
var1 var2 var3
1 1 1 0
2 1 0 1
3 0 0 1
library(dplyr)
mat=diag(-1,ncol(df))
for (i in 1:(ncol(df)-1)) {
for (j in (i+1):ncol(df)) {
num=filter(df,all_of(df[,i])==1 & all_of(df[,j])==1) %>% nrow()
mat[i,j]=num
mat[j,i]=num
}
}
mat
[,1] [,2] [,3]
[1,] -1 1 1
[2,] 1 -1 0
[3,] 1 0 -1