如何在R中创建data.table频率表?

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