如何在 R 中创建 data.table 的频率表?
r programmingserver side programmingprogramming更新于 2025/4/15 15:52:17
如果我们有一个 data.table 对象或一个转换为 data.table 的数据框,并且它有一个因子列,那么我们可能想要创建一个频率表,显示每个因子的值的数量或因子水平的数量。这是一种数据汇总方法,有助于我们了解因子水平出现的变化。如果我们有一个 data.table 对象,这可以用一行代码轻松完成,否则我们首先需要转换该对象。
示例
考虑下面的数据框 −
Group<-sample(c("A","B","C","D"),20,replace=TRUE) Frequency<-sample(1:50,20) df1<-data.frame(Group,Frequency) df1
输出
Group Frequency 1 A 11 2 B 19 3 A 41 4 D 24 5 A 22 6 B 26 7 C 46 8 C 4 9 A 45 10 C 44 11 A 50 12 C 20 13 B 27 14 D 12 15 A 34 16 B 6 17 C 35 18 D 32 19 A 42 20 D 30
加载 data.table 包并将数据框 df1 读取为 data.table −
示例
library(data.table) df1<-as.data.table(df1)
查找 df1 的频率表,它现在是 data.table 对象 −
示例
df1[,.N,by=Group]
输出
Group N 1: A 7 2: B 4 3: D 4 4: C 5
我们来看另一个例子 −
示例
Class<-sample(c("1","2","3","4","5"),20,replace=TRUE) Scores<-sample(1:100,20) df2<-data.frame(Class,Scores) df2
输出
Class Scores 1 2 45 2 5 66 3 4 61 4 5 96 5 3 27 6 5 94 7 5 51 8 3 98 9 1 14 10 3 83 11 3 6 12 1 16 13 1 18 14 1 35 15 2 70 16 4 67 17 1 63 18 5 31 19 1 58 20 4 15
示例
df2<-as.data.table(df2) df2[,.N,by=Class]
输出
Class N 1: 2 2 2: 5 5 3: 4 3 4: 3 4 5: 1 6