边上无重复值的R-相关矩阵

边上无重复值的R-相关矩阵,r,ggplot2,statistics,data-analysis,R,Ggplot2,Statistics,Data Analysis,我的数据看起来像 ## data = ## A B C a b c ## 0 1 0 1 1 0 ## 0 0 1 1 0 0 ## 1 1 0 0 1 0 ## 0 0 1 0 0 1 ## 0 1 0 1 1 0 ## 1 0 0 0 1 0 如何关联数据以获得如下结果: ## A B C ## a 0.7 -0.2 -0.2 ## b 0.3 -0.5 1.0 ## c -0.7 0.4 -1.0 我受此启发,我想制作类似的热图。但更

我的数据看起来像

## data =
##  A B C a b c
##  0 1 0 1 1 0
##  0 0 1 1 0 0
##  1 1 0 0 1 0
##  0 0 1 0 0 1
##  0 1 0 1 1 0
##  1 0 0 0 1 0
如何关联数据以获得如下结果:

##      A    B    C
## a   0.7 -0.2 -0.2 
## b   0.3 -0.5  1.0
## c  -0.7  0.4 -1.0
我受此启发,我想制作类似的热图。但更多是以这种方式:


运行
cor(data)
然后将矩阵裁剪到所需的子矩阵是正确的方法吗?或者我应该运行一些其他函数,而不是
cor(data)

,因为所需的子矩阵不是整个矩阵对角线的一个块,我认为没有更好的快捷方式,您应该使用

cor(M)[c("a", "b", "c"), c("A", "B", "C")]
#            A          B          C
# a -0.7071068  0.3333333  0.0000000
# b  0.5000000  0.7071068 -1.0000000
# c -0.3162278 -0.4472136  0.6324555

或者仅仅是
cor(M)[4:6,1:3]

您的预期结果中的行名不应该是
a,b,c
?它们应该是-打字
cor
可以包含两个矩阵/数据帧,所以也许可以尝试
cor(d[c(“a”,“b”,“c”)],d[c(“a”,“b”,“c”))
(或者一些不太硬的东西)?您的答案和@Henrik
cor d[c(“a”,“b”,“c”)],d[c(“A”、“B”、“c”))
给出了相同的结果。如果我有大数据集,@Henrik answer更有效吗?@Everettss,是的,应该是。然而,数据集应该非常大,这样才能获得显著的收益,因为计算相关性并不需要。效率的提高来自于这样一个事实,给定
k
变量,
cor(M)
计算
k(k+1)/2
相关系数,然后你将它们的子集,比如说,
k^2/4
(如果我们把变量集分成两半,就像你的例子中那样)。因此,对于较大的
k
和中等数量的观察,增益应该很小,而在相反的情况下,增益应该更高。