【问题标题】:Running a interaction matrix between many variables运行多个变量之间的交互矩阵
【发布时间】:2017-07-17 14:17:03
【问题描述】:

我有一个包含 70 个列变量的数据集,每个都是 0-1 个虚拟变量和 3500 个观察值。我正在寻找一个变量中“成功”的观察结果与另一个变量匹配的频率。换句话说,它 obs 1 在变量 1 中具有成功虚拟变量,它在变量 2 中也成功的频率,依此类推。我已经找到了如何创建一个矩阵表,当只涉及两列时显示交互但是我找不到任何涉及许多列的东西。理想情况下,id 喜欢将其呈现在一个包含 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 很陌生,所以如果我的问题不清楚或可能很简单,我深表歉意。

感谢任何帮助。谢谢

【问题讨论】:

  • 请提供一个可重复的小型数据集,并包含您迄今为止尝试过的内容。
  • 很抱歉刚开始问这些问题。我添加了更多信息以使事情更清楚。

标签: r matrix correlation interaction


【解决方案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 提供大量图表外观选项。

【讨论】:

  • 这很有帮助,但不是我想要的,我认为我的问题不够清楚。我添加了更多内容以澄清。
【解决方案2】:

你可以试试:

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

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2021-01-03
    • 2017-06-23
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多