如何在 R 数据框中查找分组值的顺序?


为了找到 R 数据框中分组值的顺序,我们可以使用 dplyr 包的 mutate 函数以及 rank 函数,分组将借助 group_by 函数完成。

例如,如果我们有一个名为 df 的数据框,其中包含两列,例如 Group 和 DV,那么我们可以使用下面给出的命令来查找 DV 值的分组顺序:

df%%group_by(Group)%%mutate(Order=rank(DV))

示例 1

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

Group<-rep(LETTERS[1:5],each=4)
Score<-sample(1:50,20)
df1<-data.frame(Group,Score)
df1

创建了以下数据框

  Group  Score
1     A     13
2     A     27
3     A     50
4     A     42
5     B     43
6     B     20
7     B     45
8     B     49
9     C     31
10    C     15
11    C     26
12    C     33
13    D     40
14    D     38
15    D     12
16    D     17
17    E     16
18    E     28
19    E      5
20    E      9

要在上面创建的数据框中加载 dplyr 包并在 df1 中查找 Score 的分组顺序,请将以下代码添加到上面的代码片段中:

Group<-rep(LETTERS[1:5],each=4)
Score<-sample(1:50,20)
df1<-data.frame(Group,Score)
library(dplyr)
df1%%group_by(Group)%%mutate(Order=rank(Score))
# A tibble: 20 x 3
# Groups: Group [5]

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

Group Score Order
<chr  <int <dbl
1  A    13  1
2  A    27  2
3  A    50  4
4  A    42  3
5  B    43  2
6  B    20  1
7  B    45  3
8  B    49  4
9  C    31  3
10 C    15  1
11 C    26  2
12 C    33  4
13 D    40  4
14 D    38  3
15 D    12  1
16 D    17  2
17 E    16  3
18 E    28  4
19 E     5  1
20 E     9  2

示例 2

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

Category<-rep(c("I","II","III","IV"),each=5)
Sales<-sample(51:100,20)
df2<-data.frame(Category,Sales)
df2

创建了以下数据框

 Category Sales
1   I      97
2   I      66
3   I      75
4   I      80
5   I      63
6  II      69
7  II      84
8  II      72
9  II      59
10 II      65
11 III     68
12 III     73
13 III     88
14 III     93
15 III    100
16 IV      58
17 IV      83
18 IV      95
19 IV      61
20 IV      67

要在上面创建的数据框中查找 df2 中 Sales 的分组顺序,请将以下代码添加到上面的代码片段中:

Category<-rep(c("I","II","III","IV"),each=5)
Sales<-sample(51:100,20)
df2<-data.frame(Category,Sales)
df2%%group_by(Category)%%mutate(Order=rank(Sales))
# A tibble: 20 x 3
# Groups: Category [4]

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

Category Sales Order
 <chr <int <dbl
1   I   97  5
2   I   66  2
3   I   75  3
4   I   80  4
5   I   63  1
6  II   69  3
7  II   84  5
8  II   72  4
9  II   59  1
10 II   65  2
11 III  68  1
12 III  73  2
13 III  88  3
14 III  93  4
15 III 100  5
16 IV   58  1
17 IV   83  4
18 IV   95  5
19 IV   61  2
20 IV   67  3

更新于: 2021年11月1日

475 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告