如何使用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
以上是 如何使用dplyr在R数据帧中为每个组创建最大值的数据帧? 的全部内容, 来源链接: utcz.com/z/335274.html