This is an old revision of the document!


Data Table

Data table is a very useful package in R which allows to facilitate and to improve the efficiency of certain operations in R. Data tables are just like data frames. You can even create them from data frames.

Introduction to Data table (PDF)

install.packages('data.table')
library(data.table)
library(reshape2)
library(data.table)
library(plyr)
mydf=data.frame(a=rep(LETTERS,each=1e6),b=rnorm(26*1e6))
mydt=data.table(mydf)
setkey(mydt,a)
mydt['F']
# Returns all rows with column a (the key) equal to F 
mydt[,mean(b),by=a]
# Gives the mean value of column b for each letter in column a. 
# Compare
system.time(t1<-mydt[,mean(b),by=a])
# 0.314 secs
# With tapply()
system.time(t2<-tapply(mydf$b,mydf$a,mean))
# 7.239 secs
# With reshape2
meltdf=melt(mydf)
system.time(t3<-dcast(meltdf,a~variable,mean))
# 4.453 secs
# With reshape plyr
system.time(t4<-ddply(mydf,.(a),summarize,mean(b)))
# 2.288 secs
# With a FOR loop
ti1<-proc.time()
t5<-data.frame(letter=unique(mydf$a),mean=rep(0,26))
for (i in t5$letter ){
  t5[t5$letter==i,2]=mean(mydf[mydf$b==i,2])
}
eltime<-proc.time()-ti1