R帮助:按组计算唯一值

时间:2019-04-01 20:27:24

标签: r count unique

这是一个示例数据集,用于说明我的问题:

example=data.frame(Group1=c(1,1,1,2,2,10,15,23),
               Group2=c(100,100,150,200,234,456,465,710),
               UniqueID=c('ABC67DF','ADC45BN','ADC45BN','ADC44BB','BBG40ML','CXD99QA','BBG40ML','VDF72PX'))

这是数据集的样子:

Group1  Group2  UniqueID
1       100     ABC67DF 
1       100     ADC45BN
1       150     ADC45BN
2       200     ADC44BB
2       234     BBG40ML
10      456     CXD99QA
15      465     BBG40ML
23      710     VDF72PX

我想计算每个唯一ID的出现次数,并有一个像这样的数据集:

Group1  Group2  UniqueID  Count
1       100     ABC67DF   1
1       100     ADC45BN   1
1       150     ADC45BN   2
2       200     ADC44BB   1 
2       234     BBG40ML   1
10      456     CXD99QA   1
15      465     BBG40ML   2
23      710     VDF72PX   1 

我尝试了以下代码:

library(plryr)
Count=count(data$UniqueID)

但是这只是压缩我的数据集以仅显示唯一的UniqueID。谁能帮助我获取所需的数据集?

1 个答案:

答案 0 :(得分:0)

R基础解决方案

example$ones <- 1   # create a vector of 1's
example <- transform(example, Count = ave(ones, UniqueID, FUN=cumsum)) # get counts
example$ones <- NULL # delete vector of 1's previously created
example  # check results
  Group1 Group2 UniqueID Count
1      1    100  ABC67DF     1
2      1    100  ADC45BN     1
3      1    150  ADC45BN     2
4      2    200  ADC44BB     1
5      2    234  BBG40ML     1
6     10    456  CXD99QA     1
7     15    465  BBG40ML     2
8     23    710  VDF72PX     1