pairs.panels R 中的函数,用于数据框中列的特定相关性
pairs.panels function in R for specific correlations of columns in dataframe
我有一个非常大的数据集,我正试图找到许多不同(和随机)数据组合之间的相关性。例如,我可能想要第 3 列与第 12-15 列之间的相关性,或者第 20 列与第 1-4 列之间的相关性,等等...
我目前正在使用 psych 库中的 pairs.panels() 函数,但无法确定我想要的特定列对。
这里是 df
,一个包含 26 列的虚拟 data.frame
,每列包含随机值,因此任何一对列的相关性都应该相当低。
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
编辑:
@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
我有一个非常大的数据集,我正试图找到许多不同(和随机)数据组合之间的相关性。例如,我可能想要第 3 列与第 12-15 列之间的相关性,或者第 20 列与第 1-4 列之间的相关性,等等...
我目前正在使用 psych 库中的 pairs.panels() 函数,但无法确定我想要的特定列对。
这里是 df
,一个包含 26 列的虚拟 data.frame
,每列包含随机值,因此任何一对列的相关性都应该相当低。
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
编辑:
@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