首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pearson相关

pearson相关
EN

Stack Overflow用户
提问于 2011-06-13 03:57:38
回答 1查看 1.2K关注 0票数 1

我有如下数据:

代码语言:javascript
运行
复制
x <- data.frame(Name=c("a", "b","c", "d", "e"),A=(1:5), B=(2:6), C=(7:11), D=c(1,1,1,1,1))

我想得到一个数据,包括a比b,a对c,a vs d,a vs e,b vs a,b vs c,b vs c,b vs d,b的所有pearson系数(不包括自比较,即a-a,b-b等)。

话说回来,我想更改以下数据

代码语言:javascript
运行
复制
            A   B   C   D
a   1   2   7   1
b   2   3   8   1
c   3   4   9   1
d   4   5   10  1
e   5   6   11  1

的结果如下所示

代码语言:javascript
运行
复制
a   b   0.989143436
a   c   0.963282002
a   d   0.93048421
a   e   0.89585579
b   c   0.9922798
b   d   0.974216034
b   e   0.951427811
c   d   0.994675789
c   e   0.982264673
d   e   0.996357429

敬请指导有效的方法。

编辑

谢谢Michaelv2 2的帮助

根据建议的代码,我发现结果如下:

代码语言:javascript
运行
复制
   X1 X2 value  
1   A  A     1   
2   B  A     1   
3   C  A     1  
4   D  A    NA  
5   A  B     1  
6   B  B     1  
7   C  B     1  
8   D  B    NA  
9   A  C     1  
10  B  C     1  
11  C  C     1  
12  D  C    NA  
13  A  D    NA  
14  B  D    NA  
15  C  D    NA  
16  D  D     1  

错误信息是“警告消息:在cor(x2:5,method = "pearson"):标准差为零”

在我看来,我可能误用了代码,请您进一步指导如何进一步解决这个问题。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-06-13 04:13:16

您可以使用以下内容:

代码语言:javascript
运行
复制
require(reshape)

y <- as.data.frame(t(x[2:5]), stringsAsFactors=FALSE)
colnames(y) <- x[[1]]

yrho <- melt(cor(y, method="pearson"))
subset(yrho, yrho$X1 != yrho$X2)

结果:

代码语言:javascript
运行
复制
    X1 X2     value
2   b  a 0.9891434
3   c  a 0.9632820
4   d  a 0.9304842
5   e  a 0.8958558
6   a  b 0.9891434
8   c  b 0.9922798
9   d  b 0.9742160
10  e  b 0.9514278
11  a  c 0.9632820
12  b  c 0.9922798
14  d  c 0.9946758
15  e  c 0.9822647
16  a  d 0.9304842
17  b  d 0.9742160
18  c  d 0.9946758
20  e  d 0.9963574
21  a  e 0.8958558
22  b  e 0.9514278
23  c  e 0.9822647
24  d  e 0.9963574
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6326529

复制
相关文章

相似问题

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