我有很多像这样的小矢量:
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
我找不到一个容易做到这一点的功能,也许是因为我真的不知道如何用语言完全表达出我真正想要的东西(因此这个问题略显尴尬)。有什么建议吗?
答案 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]
代替。