如何在 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
廣告