如果我们有一个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