※ 引述《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