如何在 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+ 次瀏覽

啟動你的職業

透過完成該課程獲得認證

開始
廣告
© . All rights reserved.