创建每个级别的累积计数的向量

时间:2012-09-27 08:42:50

标签: r

我有很多像这样的小矢量:

 id<-c(2,2,5,2,1,9,4,4,3,9,5,5)

我想创建另一个长度相同的向量,它具有到目前为止每个id的累计出现次数。对于上面的示例数据,这看起来像:

> id.count
 [1] 1 2 1 3 1 1 1 2 1 2 2 3

我找不到一个容易做到这一点的功能,也许是因为我真的不知道如何用语言完全表达出我真正想要的东西(因此这个问题略显尴尬)。有什么建议吗?

2 个答案:

答案 0 :(得分:7)

这是另一种方式:

ave(id,id,FUN=seq_along)

给出:

 [1] 1 2 1 3 1 1 1 2 1 2 2 3

答案 1 :(得分:3)

> sapply(1:length(id), function(i) sum(id[1:i] == id[i]))
 [1] 1 2 1 3 1 1 1 2 1 2 2 3

如果NA中有id,您应该使用id[1:i] %in% id[i]代替。