看板 R_Language 關於我們 聯絡資訊
問題 程式諮詢: 想計算每筆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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.104.31 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1477114200.A.690.html
celestialgod: bb=aaa[,count:=.N,by='id'] 然後再merge回去 10/22 13:39
celestialgod: merge(aaa,bb,by='id') 10/22 13:41
jasonfun44: 是否能第一筆重複資料count=1第二筆為count=2??不過 10/22 14:08
jasonfun44: 謝謝大大 10/22 14:08
celestialgod: by ID cumsum duplicated id就好 10/22 14:09
celestialgod: aaa[,count:=cumsum(duplicate(id)),by='id'] 10/22 14:13
celestialgod: 推文都未測試,如有typing,解讀不出來再推文吧 10/22 14:14
celestialgod: 第一行要改成.(count=.N)才對 10/22 14:14
jasonfun44: aaa[,count:=cumsum(duplicated(id)),by="id"]跑不出 10/22 22:31