【发布时间】:2021-08-07 16:06:35
【问题描述】:
我有两个数字数据集。 Df1 和 Df2 各包含 15000 列。我现在想计算相关性,但仅在 Df1 的第 1 列和 Df2 的第 1 列之间,然后在第 2 列 Df1 和第 2 列 Df2 之间,依此类推。这适用于所有 15000 列。创建相关矩阵会产生很多不需要的相关性。因此,我正在寻找更优雅的解决方案。
谁能帮帮我?
提前致谢 H.
【问题讨论】:
标签: r correlation
我有两个数字数据集。 Df1 和 Df2 各包含 15000 列。我现在想计算相关性,但仅在 Df1 的第 1 列和 Df2 的第 1 列之间,然后在第 2 列 Df1 和第 2 列 Df2 之间,依此类推。这适用于所有 15000 列。创建相关矩阵会产生很多不需要的相关性。因此,我正在寻找更优雅的解决方案。
谁能帮帮我?
提前致谢 H.
【问题讨论】:
标签: r correlation
您应该通过提取数据的几行/列来提供可重现的数据,以说明您尝试过的内容。或者只是用类似的结构组成数据,例如:
set.seed(42)
Df1 <- data.frame(matrix(runif(50), 10, 5))
Df2 <- data.frame(matrix(runif(50), 10, 5))
现在使用sapply:
idx <- ncol(Df1)
result <- sapply(seq(idx), function(i) cor(Df1[, i], Df2[, i]))
result
# [1] 0.24864047 -0.40809796 0.03718413 -0.09967868 0.46627380
【讨论】:
基于purrr的另一种解决方案(使用dcarlson的数据):
library(purrr)
map2_dbl(
.x = Df1,
.y = Df2,
~ cor(.x, .y)
)
返回
#> X1 X2 X3 X4 X5
#> 0.24864047 -0.40809796 0.03718413 -0.09967868 0.46627380
【讨论】: