【问题标题】:Efficiently extracting pairwise correlations in R有效地提取 R 中的成对相关性
【发布时间】:2013-11-11 01:09:24
【问题描述】:

这看起来应该很简单,但我有一个数据框,需要提取idtrial 之间每对可能的分数的相关性(换句话说,比较试验 10 上 id 1 的分数到试验 10 上的 id 2,试验 10 上的 id 1 到试验 10 上的 id 3,依此类推。示例数据帧如下。

id <- c('1','1','1','2', '2', '2', '3', '3', '3')
trial <- c('10','11','12','10', '11', '12', '10', '11', '12')
score<- c('634', '981','101', '621', '31', '124', '827', '404', '92')
d <- data.frame(id, trial, score)

d

 id trial score
  1    10   634
  1    11   981
  1    12   101
  2    10   621
  2    11    31
  2    12   124
  3    10   827
  3    11   404
  3    12    92

结果应该是一个具有所有可能组合相关性的新矩阵。从表面上看,它是用于评估跨 id 的分数可靠性。

数据大约有 10000 行长,导致 R 阻塞。我查看了这里的论坛并尝试使用combouter 来解决这个问题,但对语法感到困惑。任何帮助将不胜感激!

【问题讨论】:

    标签: r iteration reliability


    【解决方案1】:

    基于@Roland的想法,但使用R基函数xtabs

    > d$score <- as.numeric(as.character(d$score))
    > cor(xtabs(score ~ trial + id, data=d))
                1           2         3
    1  1.00000000 -0.02568439 0.5295394
    2 -0.02568439  1.00000000 0.8344046
    3  0.52953942  0.83440458 1.0000000
    

    【讨论】:

    • 以前没用过xtabs,这个好像很方便!
    【解决方案2】:

    如果你没有太多的 id,我会在这里重塑数据并使用 cor 接受 data.frame 作为输入:

    d$score <- as.numeric(as.character(d$score))
    library(reshape2)
    d1 <- dcast(d,trial~id)
    cor(d1[,-1])
    #            1           2         3
    #1  1.00000000 -0.02568439 0.5295394
    #2 -0.02568439  1.00000000 0.8344046
    #3  0.52953942  0.83440458 1.0000000
    

    【讨论】:

      【解决方案3】:

      实现此目的的一种方法是使用 data.table。您可以使用以下

      library(data.table)
      d.t <- data.table(d)
      setkey(d.t,"trial","id")
      

      然后这样的事情应该会有所帮助。

      temp <- cor(as.vector(d.t[J("10","1")]$score),as.vector(d.t[J("10","2")]$score))
      

      发布这个可以围绕这个进行循环或使用 sapply 然后将结果 rbind 到矩阵/数据帧中

      HTH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2018-06-11
        • 2020-08-29
        • 2021-02-10
        相关资源
        最近更新 更多