我在R中遇到以下问题。我有一个数据框,其中包含标识客户的值。有一个带有用户ID的列。我需要在计数器中添加另一列,数据中特定客户的出现次数是多少。数据帧按用户ID排序。所以,我有类似的东西:如果下一个值相同,则添加数字r
> niekonwersyjne[c(57:62,72:77),1]
User_ID
AMsySZa--1Og4WwseZJKRyABTWdh
AMsySZa--1Og4WwseZJKRyABTWdh
AMsySZa--1Og4WwseZJKRyABTWdh
AMsySZa--1Og4WwseZJKRyABTWdh
AMsySZa--1Og4WwseZJKRyABTWdh
AMsySZa--1qZghdxj4gypoSQRt_F
AMsySZa--2gL6xRCZFUCOXtpYxNs
AMsySZa--2gL6xRCZFUCOXtpYxNs
AMsySZa--2gL6xRCZFUCOXtpYxNs
AMsySZa--2gL6xRCZFUCOXtpYxNs
AMsySZa--2gL6xRCZFUCOXtpYxNs
AMsySZa--2gL6xRCZFUCOXtpYxNs
但需要的东西是这样的:
> niekonwersyjne[c(57:62,72:77),c(1,11)]
User_ID Counter
AMsySZa--1Og4WwseZJKRyABTWdh 1
AMsySZa--1Og4WwseZJKRyABTWdh 2
AMsySZa--1Og4WwseZJKRyABTWdh 3
AMsySZa--1Og4WwseZJKRyABTWdh 4
AMsySZa--1Og4WwseZJKRyABTWdh 5
AMsySZa--1qZghdxj4gypoSQRt_F 1
AMsySZa--2gL6xRCZFUCOXtpYxNs 1
AMsySZa--2gL6xRCZFUCOXtpYxNs 2
AMsySZa--2gL6xRCZFUCOXtpYxNs 3
AMsySZa--2gL6xRCZFUCOXtpYxNs 4
AMsySZa--2gL6xRCZFUCOXtpYxNs 5
AMsySZa--2gL6xRCZFUCOXtpYxNs 6
我能做到这一点有一个循环,但该数据帧有超过20万的意见,以便计算时间defintely太高。有没有其他方法可以达到这个结果?
,我使用的是现在的循环如下所示:
niekonwersyjne$Counter<-1
for (i in 2:nrow(niekonwersyjne)) {
if (niekonwersyjne[i-1,"User_ID"]==niekonwersyjne[i,"User_ID"]) {
niekonwersyjne[i,"Counter"]<-niekonwersyjne[i-1,"Counter"]+1} else {
niekonwersyjne[i,"Counter"]<-1
}
}
或者[在R中为一组相似的行添加一个计数器列](http://stackoverflow.com/questions/19848362/adding-a-counter-column-for-a-set-of-similar -row-in-r)或者[我如何可以更快地对组内观察值进行排名?](http://stackoverflow.com/questions/6162685/how-can-i-rank-observations-in-group-faster) –
'ave(df $ User_ID,df $ User_ID,FUN = function(i)seq_along(i))' – Sotos