如何在 R 中找到資料表物件中各組的相關矩陣?


要查詢組的相關性,我們可以使用 cor 函式,但它不能直接使用。

為此,我們首先需要為資料表物件的組列設定鍵。例如,如果我們有一個數據表 DT,其中一個數值列定義為 x,一個組列定義為 Group,並且有 4 個組 a、b、c 和 d,那麼可以找到組 a 和 b 的數值的相關性如下:

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

載入 data.table 包:

library(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

更新於: 2020-12-07

295 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.