如何在R中将变量及其相关性的组合将相关性矩阵转换为数据帧?
R中的cor函数可帮助我们从数据帧或矩阵中找到相关矩阵,但其输出始终是预期的矩阵。我们可能希望将该矩阵转换为一个数据帧,其中包含变量及其相关值的所有组合。可以通过使用as.table读取相关矩阵并将该表转换为as.data.frame数据帧来完成。
示例
请看以下数据帧-
x1<-rnorm(20,0.5) x2<-rnorm(20,1.5) x3<-rnorm(20,2) x4<-rnorm(20,2.5) x5<-rnorm(20,3) df1<-data.frame(x1,x2,x3,x4,x5) df1
输出结果
x1 x2 x3 x4 x5 1 1.01241819 1.6263879 1.0964170 3.589784 3.522261 2 -0.07203883 2.1113559 2.0853013 2.601339 2.838322 3 -0.40573390 0.1282928 2.6869231 1.456986 3.653687 4 -0.10169987 1.5902541 2.7803958 3.327289 2.746533 5 -0.55939989 -0.2573458 2.7141833 3.860593 1.779362 6 0.20375614 0.4087237 1.5304197 3.013231 3.345237 7 2.14060964 2.1761154 2.9756934 2.502471 2.741643 8 -0.92393329 2.5695567 0.7567924 1.423767 4.843986 9 0.19310980 1.9560434 3.5774616 3.516024 2.958461 10 0.47001355 1.4118910 2.1074962 3.665488 2.309292 11 0.43043496 -0.1977611 1.5456945 2.880366 2.745999 12 0.16766544 1.1394380 1.6436382 1.460217 4.168087 13 0.05919660 0.3138259 3.2329019 2.195498 3.102219 14 -0.27852409 1.8581345 1.0134072 1.267640 2.249398 15 1.00489665 1.3941321 0.9242278 3.652576 2.713325 16 -0.47215942 1.6161371 3.8449875 3.999393 3.470586 17 1.47659684 0.7814303 3.0221436 3.003357 2.675620 18 1.17223424 0.8835198 2.2660368 3.529340 3.374545 19 -0.30223845 3.1234578 2.5363014 2.290078 2.470584 20 0.09605103 1.9410643 -0.4640839 2.381046 1.690303
计算相关矩阵并将其转换为具有变量及其相关组合的数据框-
示例
Correlation_Matrix_as_Data_Frame_Of_Combinations<- as.data.frame(as.table(cor(df1))) Correlation_Matrix_as_Data_Frame_Of_Combinations
输出结果
Var1 Var2 Freq 1 x1 x1 1.00000000 2 x2 x1 -0.04107413 3 x3 x1 0.05626009 4 x4 x1 0.29686054 5 x5 x1 -0.14522277 6 x1 x2 -0.04107413 7 x2 x2 1.00000000 8 x3 x2 -0.15925174 9 x4 x2 -0.17870287 10 x5 x2 0.06219340 11 x1 x3 0.05626009 12 x2 x3 -0.15925174 13 x3 x3 1.00000000 14 x4 x3 0.31640783 15 x5 x3 0.03577516 16 x1 x4 0.29686054 17 x2 x4 -0.17870287 18 x3 x4 0.31640783 19 x4 x4 1.00000000 20 x5 x4 -0.31792430 21 x1 x5 -0.14522277 22 x2 x5 0.06219340 23 x3 x5 0.03577516 24 x4 x5 -0.31792430 25 x5 x5 1.00000000
让我们看另一个例子-
示例
y1<-sample(1:10,20,replace=TRUE) y2<-sample(1:5,20,replace=TRUE) y3<-sample(1:12,20,replace=TRUE) y4<-sample(1:15,20,replace=TRUE) y5<-sample(1:20,20,replace=TRUE) df2<-data.frame(y1,y2,y3,y4,y5) df2
输出结果
y1 y2 y3 y4 y5 1 6 4 3 12 10 2 5 3 7 14 10 3 1 1 11 7 16 4 1 4 2 12 11 5 9 4 11 8 15 6 5 2 11 6 17 7 8 4 8 2 17 8 4 2 6 5 17 9 1 5 11 2 2 10 9 4 5 2 12 11 6 3 9 14 8 12 9 5 9 3 20 13 9 5 5 3 13 14 4 1 7 15 15 15 9 1 5 8 3 16 6 4 7 7 11 17 1 5 5 13 2 18 9 2 6 15 15 19 6 3 12 11 8 20 7 1 9 3 6
示例
Data_Frame_Of_Combinations_of_Correlations<-as.data.frame(as.table(cor(df2))) Data_Frame_Of_Combinations_of_Correlations
输出结果
Var1 Var2 Freq 1 y1 y1 1.00000000 2 y2 y1 0.02121834 3 y3 y1 -0.02311103 4 y4 y1 -0.24280927 5 y5 y1 0.28378665 6 y1 y2 0.02121834 7 y2 y2 1.00000000 8 y3 y2 -0.16734209 9 y4 y2 -0.23599572 10 y5 y2 -0.08963607 11 y1 y3 -0.02311103 12 y2 y3 -0.16734209 13 y3 y3 1.00000000 14 y4 y3 -0.24489247 15 y5 y3 0.12218753 16 y1 y4 -0.24280927 17 y2 y4 -0.23599572 18 y3 y4 -0.24489247 19 y4 y4 1.00000000 20 y5 y4 -0.16567707 21 y1 y5 0.28378665 22 y2 y5 -0.08963607 23 y3 y5 0.12218753 24 y4 y5 -0.16567707 25 y5 y5 1.00000000