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