首页 文章

找出两个大数据帧之间的相关系数

提问于
浏览
1

我需要大数据框进行基因组分析 . 每个数据帧都有500k行和100列 . 这100列代表每种基因的测量值 . 我想要做的是计算两个数据农场中所有100个值的每个基因的Spearman相关系数 . 例:

df1
genename      x1      x2     x3  ..............x100
gene1      0.236   0.589  0.896               0.789
gene2      -0.361  0.782  0.583               0.478


df2
genename      x1      x2     x3  ...............x100
gene1      0.101   0.256  0.026               0.0.56
gene2      -0.231  0.569  0.158               0.0223

这里我想要的是找到所有100个obs的gene1的所有相关系数 . 这意味着每个基因应该有100个相关性coff

1 回答

  • 0

    由于每一行都被标记为geneX,因此你的描述使得它听起来像是在尝试找到df1中的xX和df2中的xX之间的相关系数,其中行将是您的观察结果,因此措辞"I will have 100 correlation coefficients for each gene"让我感到困惑 . 假设您试图找到类似标记的 df1df2 行之间的Spearman相关性(即df1和df2中gene1之间的相关性),可以这样做:

    m1 <- as.matrix(df1)
    m2 <- as.matrix(df2)
    
    res <- c()
    
    for (i in 1:nrow(m1)) {
        res <- c(res, cor(m1[i,], m2[i,], method = "spearman")))
    }
    

    考虑到data.frames的大小,这可能需要一些时间 . 在我的机器上执行100000行矩阵大约需要20秒 . 如果您可以访问多个核心,则可能需要查看 mclapply .

相关问题