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