r - R中的熔解相关矩阵

标签 r matrix duplicates dplyr correlation

我在 R 中创建了一个相关矩阵:

cor(df, use = "p")->df_corr

然后我使用以下方法熔化矩阵:

melt(df_corr) -> df_corr_melted

得到:

Var1 Var2 value
A    B    .1
A    C     .2
A    A     1
B    A     .1
B    C     .4
B    B     1
C    A     .2
C    B     .4
C    C     1

我想删除冗余对。例如,我只需要 corr(A,C) 而不是 corr(C,A)。我通读了 dplyr 中的过滤命令,但由于行组合实际上是唯一的,因此这些并不是真正的重复项。有什么建议么?

最佳答案

您可以通过使用 replace 将矩阵的对角线和上三角或下三角设置为 NA,然后仅 一次性完成此操作融化(...,na.rm = TRUE):

演示:

library(reshape2)
melt(replace(df_corr, lower.tri(df_corr, TRUE), NA), na.rm = TRUE)
#   Var1 Var2      value
# 4   aa   bb  0.5776151
# 7   aa   cc -0.4059593
# 8   bb   cc -0.5673487

示例数据:

set.seed(123)
df_corr <- cor(data.frame(aa = rnorm(10), bb = rnorm(10), cc = rnorm(10)), use = "p")

关于r - R中的熔解相关矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49034322/

相关文章:

r - 按 id 为多个日期之间的每个日期创建行

java - 将多维 Java 数组转换为字符串矩阵?

reporting-services - SSRS 矩阵百分比

python - 如何使用 numpy 将矩阵简化为行梯形形式?

java - 在java数组中查找重复单词并返回具有唯一重复单词的数组 - 使用方法

python - 检查文件中的数据是否重复 (Python)

r - R 中 "deal"包中的 jointprior() 函数

r - 从 Stata 到 R : creating a scatterplot with vertical date lines on a subset

Mysql2::错误:操作数应包含 1 列:

dplyr 中的 R 粘贴函数没有按预期迭代