data.table

转载 2016年08月26日 00:24:35
'''
data.table(DT)的操作语句类似于SQL,DT[i, j, by]中的i, j, by 对应着SQL语句的 i=where, j=select, by=group by。所以DT中的i, j并不是只是像data.frame只代表着行列,它更加的灵活多变。
符号 ” := “快速的增加或者删除列,类似SQL的update。
setkey(DT, colA, colB),可以使得检索和分组更加快速
order,快速多重排序, 例如对DT按照x,y进行排序DT[order(DT$x, -DT$y),]或者DT[with(DT, order(x, -y)),]
'''
grpsize <- ceiling(1e7/26^2)  ##10^7 rows, 676 groups
DF <- data.frame(x=rep(LETTERS,each=26*grpsize),
                 y=rep(letters,each=grpsize), v=runif(grpsize*26^2),
                 stringsAsFactors=FALSE)

DT <- as.data.table(DF) ##creat data.table
setkey(DT,x,y)

###比较检索速度
system.time(DF[DF$x=="R"&DF$y=="h",])
system.time(DT[DT$x=="R"&DT$y=="h",])

####快速分组,按照x分组,然后计算sum(v)
#tapply
system.time(tapply(DT$v, DT$x, sum))
system.time(ss<-DT[,sum(v),by=x])
head(ss)
ss

###其他操作
##联表和统计计算,更清晰认知,DT[i,j,by]中的i,j,by对应着SQL语句的i=where,j=selet,by=group by 
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9) ##creat data.table DT
X = data.table(c("b","c"),foo=c(4,2)) ##use to join
setkey(DT,x) #set the key 
##join类型1,联表,X中有b,c
DT[X]
##join类型2,类似查询,.()表示list,类似于联一个1行2列的表哦
DT[.("a",3)]

DT[,list(mysum=sum(v),Mymin=min(v)),by=.(x)]
DT[,list(mysum=sum(v),Mymin=min(v)),by=x]




cd[, ypf :=xyf + chengyf + caoyf]
cd[,year:=as.Date(ISOdate(as.POSIXlt(cyrq)),1,1)]

if(false){
tmp_0=ddply(cd,.(year),function(cd){
data.frame(table(cd$cyfs)/length(cd$cyfs))})
tmp_0=tapply(cyfs,year,function(x){prop.table(table(x))})
tmp_0=ldply(tmp_0,data.frame)
}
#利用data.table完成比率计算
tmp_0=cd[,list(cf=sort(unique(cyfs)),ratio=as.numeric(table(cyfs)/length(cyfs))),by="year"]



相关文章推荐

table-data.sql

  • 2017年06月22日 17:13
  • 39KB
  • 下载

Pivot Table Data Crunching

  • 2012年12月20日 00:44
  • 27.96MB
  • 下载

R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)

R语言︱数据集分组、排序 一、日期分组 1、关于时间的包都有很多很好的日期分组应用。 2、cut()函数 cut(x, n):将连续型变量x分割为有着n个水平的因子 cut(x, brea...

R语言data.table包学习

Introductiondata.table继承data.frame,可以快速取子集、快速分组,快速合并。 由于data.table得到的也是一个数据框,因此所有适合于data.frame的函数也适...

泛型 VS Data Table

泛型是把同一个对象的类放在一起,可以理解成编队。基于这个理解,datatable可以顺利的转换成泛型,自己之前写过一篇泛型的博客,大家多多指点:http://blog.csdn.net/sweetyo...

Animated Sortable Data Table – jTPS

  • 2013年07月16日 00:36
  • 48KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:data.table
举报原因:
原因补充:

(最多只允许输入30个字)