我在 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/