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