shift() . , ... , , , .
... ( ), . ( ). , " i" .
library(data.table)
set.seed(1)
id <- 1:100
date_samp <- seq.Date(as.Date("2010-01-01"),as.Date("2011-01-01"),"days")
n_samp <- 1e7
dt1 <-
data.table(id = sample(id,size = n_samp,replace=T),
date_1 = sample(date_samp,size = n_samp,replace=T))
setkey(dt1,id,date_1)
dt1[,date_diff:=NULL]
system.time(dt1[,date_diff:=c(0,diff(date_1)),
by=id])
dt1[,date_diff:=NULL]
dt1[,n_group := .N,by=id]
system.time(dt1[,date_diff:=c(0,date_1[2:n_group]-date_1[1:(n_group-1)]),
by=id])
dt1[,date_diff:=NULL]
system.time(dt1[,date_diff:=date_1-shift(date_1),
by=id])
dt1[,date_diff:=NULL]
dt1[,date_1num:=NULL]
dt1[,date_1num:=as.numeric(date_1)]
system.time(dt1[,date_diff:=date_1num-shift(date_1num),
by=id])
dt_key <- unique(dt1[,list(id)])
dt1[,date_diff:=NULL]
system.time(dt1[dt_key,
date_diff:=date_1num-shift(date_1num),
by=.EACHI])
dt1[,date_diff:=NULL]
dt1[,date_1int:=as.integer(date_1)]
system.time(dt1[,date_diff:=date_1int-shift(date_1int),
by=id])
dt1[,date_diff:=NULL]
dt1[,date_1int:=as.integer(date_1)]
system.time(dt1[dt_key,
date_diff:=date_1int-shift(date_1int),
by=.EACHI])