如何按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

以上是 如何按R中data.table对象的分类列提取唯一行? 的全部内容, 来源链接: utcz.com/z/354382.html

回到顶部