如何在 R 的 data.table 物件中查詢每個分組的絕對最大值?


為了在 R 的 data.table 物件中找到每個分組的絕對最大值,我們可以按照以下步驟操作:

  • 首先,建立一個 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

輸出

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出可能因您的系統而異):

   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` 函式,查詢 `Response` 列中每個分組的絕對最大值,分組方式如下所示:

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

輸出

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出可能因您的系統而異):

    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` 函式,查詢 `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

更新於:2021年11月9日

149 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.