如果我们在data.table对象中有分类数据并且某些值是重复的,那么我们可能希望从该对象中提取唯一的行。
要按data.table对象的分类列提取唯一行,我们可以使用 unique 函数并使用 by 参数定义列,如下例所示。要了解提取是如何完成的,请查看以下示例。
以下代码段创建了一个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
以下代码段创建了一个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