在R中的pair.panels函数,用于数据框中列的特定相关性。

问题描述 投票:0回答:1

我有一个非常大的数据集,并试图找到许多不同(和随机)的数据组合之间的相关性。例如,我可能想知道第3列与第12-15列之间的相关性,或者第20列与第1-4列之间的相关性,等等。

我目前正在使用心理库中的pair.panels()函数,但无法确定我想要的具体的列间配对。

r correlation psych
1个回答
1
投票

这里是 df,一个假人 data.frame 有26列,每列都包含随机值,所以任何一对列的相关性都应该是相当低的。

cols = lapply(1:26, function(dummy) runif(30))
df = do.call(data.frame, cols)
names(df) = LETTERS

如果你想知道列 "X "和列 "A"、"C"、"E "之间的相关性,可以尝试一下。sapply 随着 cor 功能。

sapply(df[c("A","C","E")], cor, df["X"])

或者使用列号。

sapply(df[c(1,3,5)], cor, df[24])

如果你想知道两组列之间的所有相关组合,可以试试:

firstGroup <- c(1,3,5,20)
secondGroup <- c(14,20,25)
combos <- expand.grid(firstGroup, secondGroup)
result <- mapply(cor, df[combos$Var1], df[combos$Var2])
resultAsMatrix <- matrix(result, nrow = length(firstGroup), dimnames = list(firstGroup, secondGroup))

试试:

> resultAsMatrix
            14         20          25
1  -0.22949844 -0.1527876 -0.11877405
3   0.23174965  0.0311125  0.33570756
5   0.01491815 -0.1263007 -0.16688800
20  0.18007802  1.0000000  0.04638838

EDIT:

@user20650指出 cor 函数内置了比较两个矩阵的能力。 所以。

cor(df[firstGroup], df[secondGroup])

得出上面我手动创建的矩阵。

            N          T           Y
A -0.22949844 -0.1527876 -0.11877405
C  0.23174965  0.0311125  0.33570756
E  0.01491815 -0.1263007 -0.16688800
T  0.18007802  1.0000000  0.04638838
© www.soinside.com 2019 - 2024. All rights reserved.