在 R 数据框中查找分组后的最大值和最小值。


为了在 R 数据框中查找分组后的最大值和最小值,我们可以使用 dplyr 包的 mutate 函数,分组可以通过 group_by 函数轻松完成。

例如,如果我们有一个名为 df 的数据框,其中包含分组列(例如 Grp)和数值列 Num,那么我们可以使用以下命令查找分组后的最大值和最小值:

df%%group_by(Gp)%%mutate(Val=ifelse(Val==max(Val),"large","small"))

示例 1

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

Group<-rep(LETTERS[1:10],each=2)
Dep_Var<-rpois(20,5)
df1<-data.frame(Group,Dep_Var)
df1

创建了以下数据框

Group Dep_Var
1  A  11
2  A   5
3  B   2
4  B   2
5  C  10
6  C   8
7  D   6
8  D   5
9  E   3
10 E   5
11 F   3
12 F   8
13 G   8
14 G   2
15 H   3
16 H   3
17 I   7
18 I   5
19 J   3
20 J   5

为了加载 dplyr 包并找到上述创建的数据框中 df1 的 Group 列中每个组的 Dep_Var 的最大值和最小值,请将以下代码添加到上述代码片段中:

Group<-rep(LETTERS[1:10],each=2)
Dep_Var<-rpois(20,5)
df1<-data.frame(Group,Dep_Var)
library(dplyr)
df1%%group_by(Group)%%mutate(Magnitude=ifelse(Dep_Var==max(Dep_Var),"large","small"))
# A tibble: 20 x 3
# Groups: Group [10]

输出

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

  Group Dep_Var Magnitude
   <chr    <int   <chr
1    A     11    large
2    A      5    small
3    B      2    large
4    B      2    large
5    C     10    large
6    C      8    small
7    D      6    large
8    D      5    small
9    E      3    small
10   E      5    large
11   F      3    small
12   F      8    large
13   G      8    large
14   G      2    small
15   H      3    large
16   H      3    large
17   I      7    large
18   I      5    small
19   J      3    small
20   J      5    large

示例 2

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

Class<-rep(1:10,each=2)
Score<-sample(20:50,20)
df2<-data.frame(Class,Score)
df2

创建了以下数据框

Class Score
1   1   44
2   1   25
3   2   40
4   2   30
5   3   34
6   3   37
7   4   36
8   4   27
9   5   38
10  5   24
11  6   29
12  6   20
13  7   47
14  7   35
15  8   45
16  8   21
17  9   49
18  9   46
19 10   31
20 10   48

为了找到上述创建的数据框中 df2 的 Class 列中每个组的 Score 的最大值和最小值,请将以下代码添加到上述代码片段中:

Class<-rep(1:10,each=2)
Score<-sample(20:50,20)
df2<-data.frame(Class,Score)
df2%%group_by(Class)%%mutate(Magnitude=ifelse(Score==max(Score),"large","small"))
# A tibble: 20 x 3
# Groups: Class [10]

输出

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

Class Score Magnitude
<int <int   <chr
1  1 44    large
2  1 25    small
3  2 40    large
4  2 30    small
5  3 34    small
6  3 37    large
7  4 36    large
8  4 27    small
9  5 38    large
10 5 24    small
11 6 29    large
12 6 20    small
13 7 47    large
14 7 35    small
15 8 45    large
16 8 21    small
17 9 49    large
18 9 46    small
19 10 31   small
20 10 48   large

更新于: 2021-11-05

189 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告