如何通过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