如何在 R 中使用 data.table 物件的分類列提取唯一行?


如果我們在 data.table 物件中擁有分類資料,並且某些值是重複的,那麼我們可能希望從該物件中提取唯一行。

要根據 data.table 物件的分類列提取唯一行,我們可以使用 unique 函式並使用 by 引數定義列,如下面的示例所示。要了解提取是如何完成的,請檢視下面的示例。

示例 1

以下程式碼片段建立了一個 data.table 物件 -

library(data.table)
grp<-sample(LETTERS[1:4],20,replace=TRUE)
Score<-rpois(20,5)
DT1<-data.table(grp,Score)
DT1

建立了以下 data.table 物件 -

   grp Score
1:  D  3
2:  B  3
3:  B  4
4:  B  3
5:  D  5
6:  B  7
7:  B  4
8:  D  1
9:  A  4
10: A  3
11: B  2
12: A  5
13: B  4
14: A  5
15: D  4
16: D  3
17: D  4
18: D  7
19: B  3
20: B  2

要在 DT1 中提取唯一行,請將以下程式碼新增到上面的程式碼片段中 -

unique(DT1,by=c("grp","Score"))

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出 -

  grp Score
1:  D  3
2:  B  3
3:  B  4
4:  D  5
5:  B  7
6:  D  1
7:  A  4
8:  A  3
9:  B  2
10: A  5
11: D  4
12: D  7

示例 2

以下程式碼片段建立了一個 data.table 物件 -

Category<-sample(c("Low","Medium","High"),20,replace=TRUE)
Price<-sample(1:10,20,replace=TRUE)
DT2<-data.table(Category,Price)
DT2

建立了以下 data.table 物件 -

   Category Price
1:  High     7
2:  Medium   5
3:  Low      1
4:  Medium   5
5:  Medium   5
6:  Medium   8
7:  Low      2
8:  Medium   4
9:  Medium   7
10: Medium   3
11: Medium   4 
12: Medium  10
13: High     7
14: Medium   3
15: Low      8
16: Low      2
17: Low      6
18: Medium   2
19: High     6
20: High     4

要在 DT2 中提取唯一行,請將以下程式碼新增到上面的程式碼片段中 -

unique(DT2,by=c("Category","Price"))

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出 -

 Category Price
1:  High    7
2:  Medium  5
3:  Low     1
4:  Medium  8
5:  Low     2
6:  Medium  4
7:  Medium  7
8:  Medium  3
9:  Medium 10
10: Low     8
11: Low     6
12: Medium  2
13: High    6
14: High    4

更新於: 2021年11月11日

321 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告