如何在 R 中找到数据表对象中各组的相关矩阵?


要查找组的相关性,我们可以使用 cor 函数,但它不能直接使用。

为此,我们首先需要为数据表对象的组列设置键。例如,如果我们有一个数据表 DT,其中一个数值列定义为 x,一个组列定义为 Group,并且有 4 个组 a、b、c 和 d,那么可以找到组 a 和 b 的数值的相关性如下:

setkey(DT,Group)
cor(DT["a"]$x,DT["b"]$x)

加载 data.table 包:

library(data.table)

示例

考虑以下数据表对象:

x<-rnorm(20,1,0.04)
Class<-rep(LETTERS[1:2],10)
DT1<-data.table(x,Class)
DT1

输出

      x    Class
1: 1.0315869 A
2: 1.0240505 B
3: 0.9820461 A
4: 1.0095865 B
5: 1.0025895 A
6: 1.0076078 B
7: 1.0266381 A
8: 0.9735519 B
9: 1.0457029 A
10: 1.0407300 B
11: 1.0384560 A
12: 0.9798408 B
13: 0.9810080 A
14: 1.0602431 B
15: 0.9968140 A
16: 1.0239540 B
17: 0.9675810 A
18: 1.0723230 B
19: 0.9705898 A
20: 1.0713552 B

查找 A 类和 B 类之间的相关性:

示例

setkey(DT1,Class)
cor(DT1["A"]$x,DT1["B"]$x)

输出

[1] -0.6282066

示例

y<-rpois(20,5)
Group<-rep(c("S1","S2","S3","S4"),5)
DT2<-data.table(y,Group)
DT2

输出

   y Group
1: 3 S1
2: 3 S2
3: 5 S3
4: 7 S4
5: 9 S1
6: 6 S2
7: 7 S3
8: 6 S4
9: 4 S1
10: 5 S2
11: 6 S3
12: 4 S4
13: 9 S1
14: 6 S2
15: 4 S3
16: 6 S4
17: 8 S1
18: 5 S2
19: 2 S3
20: 1 S4

示例

setkey(DT2,Group)
cor(DT2["S1"]$y,DT2["S2"]$y)

输出

[1] 0.8502303

示例

cor(DT2["S1"]$y,DT2["S3"]$y)

输出

[1] -0.1984965

示例

cor(DT2["S1"]$y,DT2["S4"]$y)

输出

[1] -0.1962715

示例

cor(DT2["S2"]$y,DT2["S3"]$y)

输出

[1] 0.1061191

示例

cor(DT2["S2"]$y,DT2["S4"]$y)

输出

[1] -0.1709964

示例

cor(DT2["S3"]$y,DT2["S4"]$y)

输出

[1] 0.6423677

更新于: 2020-12-07

295 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.