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