如何在R中找到data.table对象的组的相关矩阵?

为了找到组的相关性,我们可以使用 cor 函数,但不能直接使用。

为此,我们首先需要为数据表对象的组列设置它们的键。例如,如果我们有一个data.tableDT,其中一个数字列定义为 x,一个组列定义为具有 4 个组 a、b、c 和 d 的组,则可以找到组 a 和 b 的数值的相关性为 -

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

加载data.table包 -

library(data.table)

示例

考虑以下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

猜你喜欢