在子类中查找唯一计数

时间:2016-05-06 06:35:02

标签: r dplyr

我有一个看起来像这样的数据

sample <- data.frame(DEPT = c(1,1,1,1,2,2,2,2),CLASS = c(1,1,1,2,1,1,2,2),SUBCLASS= c(1,1,2,2,1,1,1,1),ID = c(101,102,103,104,105,106,107,108))

> sample
  DEPT CLASS SUBCLASS  ID
1    1     1        1 101
2    1     1        1 102
3    1     1        2 103
4    1     2        2 104
5    2     1        1 105
6    2     1        1 106
7    2     2        1 107
8    2     2        1 108

最终数据应如下所示

> sample
  DEPT CLASS SUBCLASS  ID ITEM_SUBCLASS_COUNT
1    1     1        1 101                   2
2    1     1        1 102                   2
3    1     1        2 103                   1
4    1     2        2 104                   1
5    2     1        1 105                   2
6    2     1        1 106                   2
7    2     2        1 107                   2
8    2     2        1 108                   2

如何使用dplyr实现这一目标?

1 个答案:

答案 0 :(得分:1)

我们可以使用data.table

library(data.table)
setDT(sample)[,ITEM_SUBCLASS_COUNT := .N , .(DEPT, CLASS, SUBCLASS)]

或使用base R

sample$ITEM_SUBCLASS_COUNT <- with(sample, ave(seq_along(DEPT), DEPT, 
                                     CLASS, SUBCLASS, FUN = length))