前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言高级数据结构data.table

R语言高级数据结构data.table

作者头像
一粒沙
发布2019-07-31 14:32:18
2K0
发布2019-07-31 14:32:18
举报
文章被收录于专栏:R语言交流中心R语言交流中心

对于data.frame大家应该很熟悉,它可以存储不同数据类型的向量数据。今天给大家介绍一个升级版的data.frame,其不仅可以存储不同数据类型还可以进行多列的并行运算。包的安装我们就不再赘述了(install.packages(“data.table”))。

首先看下此格式数据的生成:

  1. fread 自带的读入数据的函数,可以直接将txt,csv读入并生成相应的data.table格式数据。
  2. as.data.table 将R对象转化为data.table格式的数据,其对象可以为列表,向量,data.frame。
  3. setDT(x) 其直接将R对象转化为data.table数据类型,从而不改变数据地址。
代码语言:javascript
复制
DF =data.frame(x=rep(c("b","a","c"),each=3),y=c(1,3,6), v=1:9)
DT=as.data.table(DF,keep.rownames=TRUE)

接下来我们看下data.table数据类型的运算,其基础的运算既包含data.frame所有的运算方式,同时又有升级的运算:

1. 筛选数据可以直接填写判断公式,省掉了which/grep或者==/>等。

代码语言:javascript
复制
DT[1:3]
DT[x=="a"]

2. 列的选取也发生了改变,其中引入了list的别名 .() 进行数据筛选:

代码语言:javascript
复制
DT[,y]
DT[,.(y)]

3. data.table中数据函数的调用以及并行运算的加入:

代码语言:javascript
复制
DT[,sum(y)]
DT[,.(sum(y),sum(v))]

4. 自定义函数的执行,需要用{}包裹所有的命令。

代码语言:javascript
复制
DT[,{print(y); plot(y)}]

5. 分组计算的运算,可以单列分组也可以多列分组:

代码语言:javascript
复制
DT[,.(sum=sum(y)),by=x]
DT[,.(sum=sum(v)),by=.(x,y)]

6. 各分组的计数函数.N,例:

代码语言:javascript
复制
DT[,.N,by=x]

7. 其中数据各列的增加,删除,修改,用到的函数是:=。

代码语言:javascript
复制
DT[,y1:=y]
DT[,y:=NULL]
DT[,y:=(y+1)]

以上就是data.table的运算方式了,当然他还有一些更深的运算以及设置,如果有兴趣可以去更深入看看,目前我们也就用到这些。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档