《R语言数据高…" /> 《R语言数据高…" />
绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
R语言高效数据框操作:tidyfst
2020-02-29 08:26:15

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书《R语言数据高效处理指南》(黄天元)【简介_书评_在线阅读】 - 当当图书)。知乎专栏:R语言数据挖掘邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


对于R中的数据框进行操作,可以说是家常便饭。我自己对这个内容有过浓厚的兴趣,发过很多帖子(如HopeR:R语言数据操作:dplyr与data.table的统一(maditr/table.express)),写过一本书(《R语言数据高效处理指南》),在12届中国R语言会议(上海)做过演讲(HopeR:第十二届上海R会PPT分享:R语言数据操纵之美)。当时我的观点是,dplyr和data.table两个火的包,前者具备编程语言表达上的美感,后者具备强的计算机性能(速度),在未来会看到两者优势的合并。不曾想,才过2个月,我也成为这件事情的促成者之一。我去找到所有与这方面有关的包,但是依旧用不顺手,这事放在以前肯定就是等等看,保不准后面就有人出个好用的包给我用了。不过放在现在,一不做二不休,我们就自己写一个。于是就有了它:

Logo寓意:顶层彩虹代表优雅美观的API,底层闪电代表高性能运算提供的速度

链接如下:

hope-data-science/tidyfstgithub.com
CRAN - Package tidyfstcran.r-project.org
https://hope-data-science.github.io/tidyfst/hope-data-science.github.io

这是我在学习如何做包之后写的第二个包(个是akc)。开始的时候这个包叫做tidydt,dt是data.table的缩写,表示用tidy的语法来表达data.table。不过后来发现重名了,CRAN让双方都不要用这个名字,因为“dt”可能是“datetime”的缩写,有歧义,后就有了现在这个名字——tidyfst(Tidy Verbs for Fast Data Manipulation)。开始这个包只有两个依赖包,就是data.table和stringr,基本就是利用stringr来给data.table做一个跟dplyr一样的API。不过在造轮的过程中,发现为了用户方便,做了一些新的API,以更方便数据操作。

如果你经常使用dplyr/data.table/fst三个包中的任何一个,或者你对操作data.frame结构的数据有很多需求,那么你一定能够在tidyfst中找到新(好)的发现。tidyfst目前的定位就是,单机上高效的数据框处理工具!这个意思是,如果你不是用分布式架构,但是需要日常处理1G-100G的数据,它会是你佳的选择。它的API是独特的,在某些细节我认为可以超越dplyr(默认可以用字符串直接通过正则表达式选择列,无差别处理任何数据框等),而运行速度上肯定不会比data.table快,但是它节省了你思考如何写正确data.table的时间,以及别人看懂你代码的时间,这些时间成本都是非常庞大的!因此,tidyfst是一个性能-可读性的平衡性工具。我个人没有意愿再去做benchmark,因为它的结论肯定是速度:data.table > tidyfst > dplyr (如果不是更快,我就不会来做它了);可读性:dplyr ≈ tidyfst > data.table;灵活性:tidyfst >= dplyr > data.table。我基本上找了所有与这个主题的包相似的包,然后吸取其特性的优点。这些包包括:

tidyfst将会一直从新的包中学习,不过它的根本还是data.table(今后可能会更改导入包,但是它是不会变的),其实它不失为一个引导大家了解data.table的工具。我其实data.table没有那么熟练,但是没关系,我只要熟练一次就够了,后面就可以用tidyfst直接调用这些高性能的操作。如果你是从dplyr想入手data.table的用户,那么没有比tidyfst更好的选择了。

温馨提示:v0.6.9已经在CRAN,但是group_dt函数我刚刚优化了,如果要用快速分组计算,请使用GitHub上的开发版本(v0.7.7)。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

R语言
创建时间:2020-06-15 11:46:51
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的工具。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~