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