如何在 R 中通过 data.table 对象中的分类列创建相关矩阵?


要在 R 中通过 data.table 对象中的分类列创建相关矩阵,我们可以按照以下步骤操作:

  • 首先,创建一个 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

执行以上脚本后,会生成以下输出(此输出因系统随机性而异):

    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

通过分类列创建相关矩阵

使用 split 函数与 lapply 来为 DT 中按 Group 列分组的数据创建相关矩阵:

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

更新于: 14-08-2021

1K+ 次浏览

启动你的职业

通过完成该课程获得认证

开始
广告