我有一个输出表,看起来像:
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?
谢谢!
答案 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)