我在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