※ 引述《jasonfun44 (kk123)》之銘言:
: 問題
: 程式諮詢:
: 想計算每筆id重覆次數
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: aaa為data.table
: 我想對其id做排序後,再對日期做排序
: 然後計算每筆id重複次數給入新增count欄位
: aaa<-Rawdata[order(id,name,date),]
: for(i in 1:100){
: if( aaa[i,id]==aaa[i+1,id] & aaa[i,name]==aaa[i+1,name] ) {
: aaa[c(i),count]<=z
: z=z+c(1)
: }
: else( aaa[i,id]!=aaa[i+1,id] | aaa[i,name]!=aaa[i+1,name] )
: {
: aaa[c(i),count]<=z
: aaa[c(i+1),count]<=c(1)
: z<-1
: }
: }
: 不知道以上這段程式碼要如何改,懇請各位大大幫我檢查位在哪,謝謝
: [環境敘述]:
: Win10 r3.31
library(data.table)
set.seed(11)
aaa <- data.table(id = rep(1:5, times = sample(1:10, 5, TRUE)))
aaa[,id2 := id][ , count := cumsum(duplicated(id2))+1L, by=.(id)][,id2 :=NULL]
print(aaa)
# id count
# 1: 1 1
# 2: 1 2
# 3: 1 3
# 4: 2 1
# 5: 3 1
# 6: 3 2
# 7: 3 3
# 8: 3 4
# 9: 3 5
# 10: 3 6
# 11: 4 1
# 12: 5 1