如何在R中的data.table对象中找到每个组的绝对最大值?
要找到data.tableR中对象中每个组的绝对最大值,我们可以按照以下步骤操作-
首先,创建一个data.table对象。
然后,使用dplyr包的summarise_each函数which.max和abs函数,找到用group_by分组后的每个组的绝对最大值。
示例1
创建data.table对象
让我们创建一个data.table对象,如下所示-
library(data.table) Class<-sample(c("I","II","III"),25,replace=TRUE) Response<-sample(-50:50,25) DT1<-data.table(Class,Response) DT1输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
Class Response 1: II 25 2: I -29 3: II 14 4: III 35 5: III -3 6: I -10 7: III -22 8: III -28 9: II -15 10: I -41 11: I -8 12: III -1 13: II -11 14: II 9 15: III 45 16: II -23 17: I 42 18: II -16 19: III 44 20: II -47 21: III 37 22: III -27 23: I -40 24: I 18 25: II 3 Class Response
找出每组的绝对最大值
使用dplyr包的summarise_each函数which.max以及abs函数在使用group_by分组后找到列响应的每个组的绝对最大值,如下所示-
library(data.table) Class<-sample(c("I","II","III"),25,replace=TRUE) Response<-sample(-50:50,25) DT1<-data.table(Class,Response) library(dplyr) DT1 %>% group_by(Class) %>% summarise_each(funs(.[which.max(abs(.))]))输出结果
# A tibble: 3 x 2 Class Response <chr> <int> 1 I 42 2 II -47 3 III 45
示例2
创建data.table对象
让我们创建一个data.table对象,如下所示-
library(data.table) Factor<-sample(c("F1","F2","F3","F4","F5"),25,replace=TRUE) DV<-rnorm(25) DT2<-data.table(Factor,DV) DT2输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
Factor DV 1: F5 -2.17198942 2: F2 1.86828270 3: F5 -0.13921697 4: F1 -1.12527133 5: F2 0.30994193 6: F3 -0.85019956 7: F1 -0.53960590 8: F4 0.71515012 9: F1 0.95894780 10: F1 0.69673391 11: F1 1.59025968 12: F1 0.54539870 13: F2 1.03472636 14: F2 -0.86223774 15: F5 1.09875408 16: F5 0.76012240 17: F2 -0.81212071 18: F4 0.16992534 19: F4 0.15300303 20: F3 -1.16854925 21: F5 0.83239589 22: F5 -0.43753269 23: F4 0.03010316 24: F3 0.15060870 25: F5 -0.84028548 Factor DV
找出每组的绝对最大值
使用dplyr包的summarise_each函数which.max以及abs函数在使用group_by分组后找到列DV的每个组的绝对最大值,如下所示-
library(data.table) Factor<-sample(c("F1","F2","F3","F4","F5"),25,replace=TRUE) DV<-rnorm(25) DT2<-data.table(Factor,DV) library(dplyr) DT2 %>% group_by(Factor) %>% summarise_each(funs(.[which.max(abs(.))]))输出结果
# A tibble: 5 x 2 Factor DV <chr> <dbl> 1 F1 1.59 2 F2 1.87 3 F3 -1.17 4 F4 0.715 5 F5 -2.17