@konvas , , := :
library(data.table)
library(plyr)
library(microbenchmark)
t0 <- as.Date("2013-01-01")
Df <- data.frame(
ID=sample(LETTERS,500000,replace=TRUE),
Date=t0+sample((-100):100,500000,replace=TRUE),
stringsAsFactors=FALSE)
Dt1 <- data.table(Df)
setkeyv(Dt1,cols="ID")
Dt2 <- copy(Dt1)
f1 <- function(){
Agg <- Dt1[
,
mutate(.SD,start = min(Date)),
by = list(ID)]
}
f2 <- function(){
Agg <- Dt2[
,
"Start":=min(Date),
by=list(ID)]
}
Res <- microbenchmark(
f1(),f2()
)
Unit: milliseconds
expr min lq median uq max neval
f1() 25.08676 27.30188 28.22867 31.60754 63.97749 100
f2() 10.48293 11.39930 13.25193 14.26284 47.80564 100