2

我有很多这样的小向量:

 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

我找不到一个可以轻松做到这一点的函数,可能是因为我真的不知道如何用语言完全表达我真正想要的是什么(因此问题标题有点尴尬)。有什么建议么?

4

2 回答 2

7

这是另一种方式:

ave(id,id,FUN=seq_along)

给出:

 [1] 1 2 1 3 1 1 1 2 1 2 2 3
于 2012-09-27T09:02:38.927 回答
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

或者如果你有NAsid你应该使用id[1:i] %in% id[i]

于 2012-09-27T08:45:21.850 回答