R data.table:如何按组指示唯一列值的首次出现

R data.table:如何按组指示唯一列值的首次出现,r,data.table,lag,shift,R,Data.table,Lag,Shift,我有一个很大的data.table~18*10^6行,其中填充了列ID和CLASS,我想创建一个新的二进制列,用ID指示新类值的出现 DT一种可能性是: DT[, NEWCLS := as.integer(!duplicated(CLASS)), by = ID] ID CLASS NEWCLS 1: 1 a 1 2: 1 a 0 3: 1 b 1 4: 2 c 1 5: 2 b 1 看

我有一个很大的data.table~18*10^6行,其中填充了列ID和CLASS,我想创建一个新的二进制列,用ID指示新类值的出现


DT一种可能性是:

DT[, NEWCLS := as.integer(!duplicated(CLASS)), by = ID]

   ID CLASS NEWCLS
1:  1     a      1
2:  1     a      0
3:  1     b      1
4:  2     c      1
5:  2     b      1

看起来应该和你的一样!重复(.SD,by=c(“ID”,“CLASS”)),这可能比使用by=.更快。你能详细说明一下为什么要快一点吗?当然。我认为这是对函数的一次调用,而不是一组一次调用;它是data.table包中的一个函数,所以我怀疑它很快