如何在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 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告