我有一个包含70个列变量的数据集,每个变量都是0-1个虚拟变量,3500个观察值。我希望看到一个变量中“成功”的观察与另一个变量匹配的频率。换句话说,它在变量1中具有成功虚拟,它在变量2中也经常成功,所以对于所有变量都是如此。我已经找到了如何创建一个矩阵表,显示仅涉及两列时的交互,但是我找不到涉及许多列的任何内容。理想情况下,我喜欢在70个变量和70个变量的交互矩阵中表示这一点。以下是数据集的概念:
Dat A B C D
XX 1 1 1 1
XY 0 1 0 1
XZ 0 0 1 1
我希望的输出是:
Out A B C D
A 0 1 1 1
B 0 1 2
C 0 2
D 0
显示(A,B)配对(B,C)的次数是配对等等。
我尝试过使用table()命令以及as.matrix,但似乎这些需要将数据组织为两列,并且在引用许多列变量时无法理解数据。我对R很新,所以如果我的问题不清楚或可能很简单,我会道歉。
感谢任何帮助。感谢
答案 0 :(得分:1)
这里是如何创建不确定大小的相关矩阵。首先创建一个可重现的数据集示例...
dat <- matrix(sample(0:1, size = 700, replace = TRUE), ncol = 70)
dat <- data.frame(dat)
然后计算相关性......
dat <- cor(dat)
然后直观地绘制相关性......
library(corrplot)
corrplot(dat, method = "square")
您还可以使用数字而不是颜色来绘制相关性...
corrplot(dat, method = "number")
显然,在将这些图表用于出版物之前,您需要对这些图表进行精细处理。 corrplot
为图表外观提供了大量选项。
答案 1 :(得分:0)
您可以尝试:
res <- apply(combn(2:ncol(df), 2), 2, function(x, y) sum(rowSums(y[, x]) == 2), df)
m <- diag(x=0, ncol(df)-1)
m[upper.tri(m)] <- res
m[lower.tri(m)] <- NA
dimnames(m) <- list(colnames(df)[-1], colnames(df)[-1])
A B C D
A 0 1 1 1
B NA 0 1 2
C NA NA 0 2
D NA NA NA 0