如何在 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
输出
执行上述脚本后,会生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):
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 函数,查找列 x 在使用 group_by 分组后每个分组的绝对最大值,如下所示:
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
输出
执行上述脚本后,会生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):
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 函数,查找列 DV 在使用 group_by 分组后每个分组的绝对最大值,如下所示:
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
广告