如何在R数据框中找到每个组的绝对最大值?

要找到 R 数据框中每个组的绝对最大值,我们可以按照以下步骤操作 -

  • 首先,创建一个数据框。

  • 然后,使用 dplyr 包的 summarise_each 函数which.max和 abs 函数,在用 group_by 分组后找到每个组的绝对最大值。

示例 1

创建数据框

让我们创建一个数据框,如下所示 -

x<-rnorm(25)

Grp<-sample(LETTERS[1:10],25,replace=TRUE)

df<-data.frame(x,Grp)

df

输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

      x       Grp

1   0.44813793 I

2  -0.42762853 F

3   1.84217825 D

4  -1.12661531 H

5   0.16377743 E

6  -0.30519746 F

7   1.68274689 D

8   0.20418659 C

9  -0.45494028 J

10 -0.80892645 G

11 -1.79420007 I

12  0.50946053 F

13  0.01846558 J

14  0.94334983 B

15 -0.41051915 A

16  0.85902521 I

17 -0.07774155 I

18 -0.14128810 C

19 -0.20461102 G

20  0.11894428 F

21  0.71705698 C

22  0.71409822 D

23  0.62682371 A

24 -0.03779485 F

25  0.34670072 A

找出每组的绝对最大值

使用 dplyr 包的 summarise_each 函数which.max以及 abs 函数在使用 group_by 分组后找到列 x 的每个组的绝对最大值,如下所示 -

x<-rnorm(25)

Grp<-sample(LETTERS[1:10],25,replace=TRUE)

df<-data.frame(x,Grp)

library(dplyr)

df %>% group_by(Grp) %>% summarise_each(funs(.[which.max(abs(.))]))

输出结果
# A tibble: 10 x 2

   Grp  x

 <chr> <dbl>

1  A   0.627

2  B   0.943

3  C   0.717

4  D   1.84

5  E   0.164

6  F   0.509

7  G  -0.809

8  H  -1.13

9  I  -1.79

10 J  -0.455

示例 2

创建数据框

让我们创建一个数据框,如下所示 -

DV<-sample(-20:20,25)

Gender<-sample(c("Male","Female"),25,replace=TRUE)

dat<-data.frame(DV,Gender)

dat

输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

    DV Gender

1  -16 Male

2  -18 Female

3   20 Male

4   10 Female

5   1  Female

6  -1  Male

7   11 Male

8  -14 Female

9   4  Male

10 -17 Female

11 -9  Female

12   9 Female

13  12 Male

14   5 Male

15  -7 Male

16  14 Female

17   8 Female

18  19 Female

19 -8  Male

20 -19 Male

21  6  Male

22 18  Male

23 -3  Male

24 -5  Female

25 13  Female

找出每组的绝对最大值

使用 dplyr 包的 summarise_each 函数which.max以及 abs 函数在使用 group_by 分组后找到列 DV 的每个组的绝对最大值,如下所示 -

DV<-sample(-20:20,25)

Gender<-sample(c("Male","Female"),25,replace=TRUE)

dat<-data.frame(DV,Gender)

library(dplyr)

dat %>% group_by(Gender) %>% summarise_each(funs(.[which.max(abs(.))]))

输出结果
# A tibble: 2 x 2

Gender    DV

 <chr>   <int>

1 Female -20

2 Male    17

以上是 如何在R数据框中找到每个组的绝对最大值? 的全部内容, 来源链接: utcz.com/z/351595.html

回到顶部