如何使用dplyr包在R数据框中为每个分组创建最大值的数据框?
在进行数据分析时,有时需要对分组的最大值进行子集选择,并将此数据框子集用于比较分析。主要目标是将这些最大值彼此之间或与阈值进行比较。在R中,我们可以使用dplyr包中的`group_by`和`slice`函数找到分组的最大值。
示例
考虑以下数据框:
> x<-rep(c("S1","S2","S3","S4"),times=c(6,12,12,10))
> y<-1:40
> df<-data.frame(x,y)
> head(df,20)
x y
1 S1 1
2 S1 2
3 S1 3
4 S1 4
5 S1 5
6 S1 6
7 S2 7
8 S2 8
9 S2 9
10 S2 10
11 S2 11
12 S2 12
13 S2 13
14 S2 14
15 S2 15
16 S2 16
17 S2 17
18 S2 18
19 S3 19
20 S3 20加载dplyr包:
> library(dplyr)
使用`group_by`和`slice`查找最大值的数据框:
> Group_Maximum_df<-df%>%group_by(x)%>%slice(which.max(y)) > Group_Maximum_df # A tibble: 4 x 2 # Groups: x [4] x y <fct> <int> 1 S1 6 2 S2 18 3 S3 30 4 S4 40
在上面的例子中,我们有一个因子变量。现在让我们考虑一下,分组变量不是用因子变量表示,而是用整数值表示。在这种情况下,查找最大值数据框的过程也是一样的:
> a<-rep(c(1,2,3,4,5),times=c(5,10,10,5,10)) > b<-rep(c(25,23,21,24),times=c(10,10,10,10)) > df2<-data.frame(a,b) > head(df2,20) a b 1 1 25 2 1 25 3 1 25 4 1 25 5 1 25 6 2 25 7 2 25 8 2 25 9 2 25 10 2 25 11 2 23 12 2 23 13 2 23 14 2 23 15 2 23 16 3 23 17 3 23 18 3 23 19 3 23 20 3 23 > Group_Maximum_df2<-df2%>%group_by(a)%>%slice(which.max(b)) > Group_Maximum_df2 # A tibble: 5 x 2 # Groups: a [5] a b <dbl> <dbl> 1 1 25 2 2 25 3 3 23 4 4 21 5 5 24
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP