如何通过R中data.table对象中的分类列创建相关矩阵?
要通过data.tableR中对象中的分类列创建相关矩阵,我们可以按照以下步骤操作-
首先,创建一个data.table对象。
然后,通过基于分类列拆分对象来找到相关矩阵。
创建data.table对象
加载data.table包并创建一个data.table对象-
library(data.table) x<-sample(1:50,25) y<-sample(1:50,25) z<-sample(1:50,25) Group<-sample(LETTERS[1:4],25,replace=TRUE) DT<-data.table(x,y,z,Group) DT
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
x y z Group
1: 15 7 3 C
2: 11 1 31 B
3: 2 16 15 A
4: 33 42 49 B
5: 27 39 19 A
6: 16 21 1 D
7: 18 22 37 A
8: 42 6 35 D
9: 30 40 38 D
10: 8 17 26 C
11: 34 10 41 B
12: 47 33 13 C
13: 7 5 8 A
14: 26 26 43 D
15: 3 41 24 D
16: 31 23 9 B
17: 40 27 32 B
18: 25 30 21 A
19: 5 8 47 D
20: 6 49 17 A
21: 46 3 34 C
22: 21 38 48 A
23: 48 50 4 A
24: 19 36 36 B
25: 39 4 50 C
x y z Group通过分类列创建相关矩阵
使用带有lapply的split函数为DTbyGroup列中的数据创建相关矩阵-
library(data.table) x<-sample(1:50,25) y<-sample(1:50,25) z<-sample(1:50,25) Group<-sample(LETTERS[1:4],25,replace=TRUE) DT<-data.table(x,y,z,Group) lapply(split(DT[,1:3],DT$Group),cor)输出结果
$A
x y z
x 1.0000000 0.58114264 -0.10587701
y 0.5811426 1.00000000 0.03787179
z -0.1058770 0.03787179 1.00000000
$B
x y z
x 1.00000000 0.3848310 0.06995891
y 0.38483099 1.0000000 0.26711858
z 0.06995891 0.2671186 1.00000000
$C
x y z
x 1.0000000 0.1111837 0.3542485
y 0.1111837 1.0000000 -0.4556856
z 0.3542485 -0.4556856 1.0000000
$D
x y z
x 1.0000000 -0.2276999 0.1791530
y -0.2276999 1.0000000 -0.1737857
z 0.1791530 -0.1737857 1.0000000