如何在 R 数据框中查找 ID 对应的频率?


为了在 R 数据框中查找 ID 对应的频率,我们可以在定义 ID 后使用 dplyr 包的 summarise 函数,并使用 group_by 函数,同时将我们想要查找频率的列也放在 group_by 函数内部。

查看下面的示例以了解如何操作。

示例 1

以下代码片段创建了一个示例数据框 -

ID<-sample(1:4,20,replace=TRUE)
Sales<-sample(1:10,20,replace=TRUE)
df1<-data.frame(ID,Sales)
df1

创建了以下数据框 -

   ID Sales
1  4   4
2  1   3  
3  4   9
4  4   8
5  2   6
6  1   9
7  2   8
8  1   8
9  1   6
10 1   1
11 4   6
12 2   9
13 2  10
14 2   6
15 3   2
16 3   9
17 4   6
18 1   8
19 2  10
20 2   1

要加载 dplyr 包并在 df1 中创建 ID 对应的频率列,请将以下代码添加到上述代码片段中 -

library(dplyr)
df1%>%group_by(ID,Sales)%>%summarise(Frequency=n())
`summarise()` regrouping output by 'ID' (override with `.groups` argument)
# A tibble: 16 x 3
# Groups: ID [4]

输出

如果您将以上所有代码片段作为单个程序执行,则会生成以下输出 -

   ID  Sales Frequency
  <int> <int> <int>
1  1    1      1
2  1    3      1
3  1    6      1
4  1    8      2
5  1    9      1
6  2    1      1
7  2    6      2
8  2    8      1
9  2    9      1
10 2   10      2
11 3    2      1
12 3    9      1
13 4    4      1
14 4    6      2
15 4    8      1
16 4    9      1

示例 2

以下代码片段创建了一个示例数据框 -

ID<-sample(0:2,20,replace=TRUE)
Group<-sample(c("I","II","III"),20,replace=TRUE)
df2<-data.frame(ID,Group)
df2

创建了以下数据框 -

  ID Group
1  2 III
2  0   I
3  0   I
4  0   I
5  2 III
6  0  II
7  2  II
8  2  II
9  1 III
10 2   I
11 1  II
12 1   I
13 1   I
14 1   I
15 2  II
16 0  II
17 1   I
18 2   I
19 2   I
20 0 III

要在 df2 中创建 ID 对应的频率列,请将以下代码添加到上述代码片段中 -

df2%>%group_by(ID,Group)%>%summarise(Frequency=n())
`summarise()` regrouping output by 'ID' (override with `.groups` argument)
# A tibble: 9 x 3
# Groups: ID [3]

输出

如果您将以上所有代码片段作为单个程序执行,则会生成以下输出 -

  ID Group Frequency
 <int><chr> <int>
1  0    I    3
2  0   II    2
3  0  III    1
4  1    I    4
5  1   II    1
6  1  III    1
7  2    I    3
8  2   II    3
9  2  III    2

更新于: 2021-11-11

444 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告