首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效提取R中的两两相关关系

有效提取R中的两两相关关系
EN

Stack Overflow用户
提问于 2013-10-31 06:11:44
回答 2查看 589关注 0票数 0

这看起来应该很简单,但我有一个数据框架,需要在trial中提取每个可能的一对trial的得分之间的相关性(换句话说,将试验10的id 1与试验10的id 2、试验10的id 1与试验10的id 3的分数进行比较,等等。示例数据帧如下所示。

代码语言:javascript
复制
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

代码语言:javascript
复制
 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

结果应该是一个具有所有可能组合的相关性的新矩阵。表面上,它是用来评估整个ids的得分可靠性。

数据大约有10000行长,这导致R堵塞。我在这里查看过论坛,并试图使用combouter来解决这个问题,但是被语法搞糊涂了。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 10:09:56

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

代码语言:javascript
复制
> 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
票数 1
EN

Stack Overflow用户

发布于 2013-10-31 07:44:51

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

代码语言:javascript
复制
library(data.table)
d.t <- data.table(d)
setkey(d.t,"trial","id")

然后像这样的东西会有帮助。

代码语言:javascript
复制
temp <- cor(as.vector(d.t[J("10","1")]$score),as.vector(d.t[J("10","2")]$score))

发布后,这可能会在此周围设置一个循环,或者使用,然后将结果重新绑定到一个矩阵/数据框架中。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19699560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档