我使用以下代码为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之间),从而使其在整个表格中显示两次?
答案 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