如何在R中的Spearman Rho相关表中停止重复相关?

时间:2019-06-14 16:27:51

标签: r correlation

我使用以下代码为R中有2列以上的CSV文件制作了Spearman Rho相关性表:

> myDataset <- read.csv(file.choose())
> attach(myDataset)
> spearmanRhoTestData <- cor(myDataset, use="complete.obs",method="spearman")

但是,在我的表(spearmanRhoTestData)中,任何两个变量之间的相关性都会显示两次(如下所示):

    Var1 Var2 Var3 Var4
Var1  1   0.5  0.7 0.9
Var2  0.5  1   0.3 0.6  
Var3  0.7  0.3  1  0.2
Var4  0.9  0.6  0.2 1

有什么办法可以在R中编写代码来摆脱相关值(例如,在var1和var2之间),从而使其在整个表格中显示两次?

1 个答案:

答案 0 :(得分:0)

假设要保持相关矩阵格式的最简单方法是

# set upper triangle values to NA
spearmanRhoTestData[upper.tri(spearmanRhoTestData)] = NA

# visualise updated matrix
spearmanRhoTestData

这是使用corrr包的另一种方法,它将为您提供一个经过重整的相关数据框,而无需重复:

library(corrr)

# get correaltion matrix
tbl = correlate(mtcars)

# set upper triangle values to NA
tbl[upper.tri(tbl)] = NA

# reshape and omit NAs
stretch(tbl, na.rm = T)

# # A tibble: 55 x 3
#     x     y     r
#  <chr> <chr>  <dbl>
# 1 mpg   cyl   -0.852
# 2 mpg   disp  -0.848
# 3 mpg   hp    -0.776
# 4 mpg   drat   0.681
# 5 mpg   wt    -0.868
# 6 mpg   qsec   0.419
# 7 mpg   vs     0.664
# 8 mpg   am     0.600
# 9 mpg   gear   0.480
# 10 mpg   carb  -0.551
# # ... with 45 more rows