如何使用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

回到顶部