如何在R的data.table物件中根據另一個分類列查詢類別的比例?


為了在R的data.table物件中根據另一個分類列查詢類別的比例,我們可以按照以下步驟操作:

  • 首先,建立一個data.table物件。
  • 根據分類列查詢比例。

建立data.table物件

載入data.table包並建立一個具有兩個分類列的data.table物件:

library(data.table)
Category1<-sample(LETTERS[1:3],30,replace=TRUE)
Category2<-sample(letters[1:4],30,replace=TRUE)
DT<-data.table(Category1,Category2)
DT

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出可能因您的系統而異):

   Category1 Category2
1:    C       d
2:    B       a
3:    C       d
4:    C       a
5:    B       c
6:    C       b
7:    B       a
8:    B       b
9:    B       c
10:    B       d
11:    B       a
12:    A       d
13:    C       d
14:    B       a
15:    A       a
16:    C       a
17:    B       d
18:    C       c
19:    C       c
20:    A       b
21:    A       d
22:    C       c
23:    B       d
24:    C       c
25:    A       d
26:    A       b
27:    B       a
28:    A       c
29:    B       d
30:    A       d
   Category1 Category2

根據分類列查詢比例

使用帶有factor函式的tabulate函式來查詢Category1值中Category2值的比例:

library(data.table)
Category1<-sample(LETTERS[1:3],30,replace=TRUE)
Category2<-sample(letters[1:4],30,replace=TRUE)
DT<-data.table(Category1,Category2)
DT[order(Category2),.(Category2=letters[1:4],Proportion=tabulate(factor(Category2))/.N
),by=Category1]
   Category1 Category2    Proportion
1:    B          a       0.41666667
2:    B          b       0.08333333
3:    B          c       0.16666667
4:    B          d       0.33333333
5:    C          a       0.20000000
6:    C          b       0.10000000
7:    C          c       0.40000000
8:    C          d       0.30000000
9:    A          a       0.12500000
10:   A          b       0.25000000
11:   A          c       0.12500000
12:   A          d       0.50000000

更新於:2021年8月13日

141 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.