如何用变量之间已经导出的相关值绘制R中的相关矩阵?

时间:2019-09-20 03:02:05

标签: r ggplot2 heatmap correlation

我有一个输出表,看起来像:

Vars Corr  SE
1_2  0.51  0.003
1_3  0.32  0.001
...
49_50 0.23 0.006

其中,相关性值是在另一软件中为Vars中所述的变量得出的(1_2表示变量1和2之间)。将其转换为可以显示所有50个变量之间的相关矩阵的格式的最佳方法是什么?

我假设还需要一种方法使对角线也为1?

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,假设您将数据放在一列中,则可以重组并使用corrplot

cordata = data.frame(
  Vars = paste0(rep(1:50, times = 50), "_", 
                rep(1:50, each = 50)),
  Corr = rnorm(n = 50*50, mean = 0, sd = .3)
) %>%
  #for the sake of demonstration return Corrs beyond -1 and 1 to 0.
  mutate(Corr = replace(Corr, Corr > 1 | Corr < -1, 0))

head(cordata)
  Vars         Corr
1  1_1  0.453807195
2  2_1  0.237179163
3  3_1  0.303635874
4  4_1 -0.314318833
5  5_1  0.008682918
6  6_1 -0.067164730

cormat = matrix(cordata$Corr, byrow = TRUE, ncol = 50)
# You can use corrplot::corrplot
corrplot(cormat)

enter image description here