如何在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
广告