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