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

相关文章