写
在前面
在小伙伴问大猫的所有关于R的问题中,“如何最快学R”应该是呼声最高的话题了。以前大猫曾经把自己的经验总结成一篇万字长文发在人大经济论坛中,但是由于篇幅太长,很少有小伙伴有时间看完。从今天开始,大猫会陆续把原来的这篇心得经过提炼后发出来,同时还会增加一些新的内容。
OK,老司机要发车了,小伙伴们快上车!
学
习路径:数据处理部分(data manipulation)
对于学习任何新知识而言,学习路径远比选择某一本特定教材要来得重要。因为任何教材永远只能教你一部分内容,而明确了学习路径,你就能知道如何针对自己的需求选择教材。那么,大猫建议的R学习路径是什么呢?
“在所有数据挖掘工作中,70%~80%的时间都用在了枯燥无谓的前期数据清洗与处理中,而只有剩下的20%~30%的时间是用在建模和计算上。”
——Hadley Wickham
”
小伙伴们肯定有这样的经历:在写论文的过程中,绝大部分的时间都用来清理数据,例如剔除异常值、表与表之间的匹配与连接、数据分类汇总等,而最后用来跑回归的时间可能就只有十几秒左右。因此,大猫给出的第一个建议是:
一:将自己的绝大多数时间花在学习数据处理的方法上!
那么R中有哪些适合数据处理的工具呢?首先大猫告诉大家:不要使用内置的data.frame,不要使用内置的data.frame,不要使用内置的data.frame!重要的事情说三遍!因为内置的data.frame不仅语法很冗长,而且速度非常慢(有兴趣的小朋友请搜索“the copy on modify mechanisim of R)。大猫在这里建议大家在以下两个包中选择:
data.table vs. dplyr
简单而言,data.table和dplyr的功能类似,但是根据世界上最大的程序(同)员(性)交(交)流(友)网站stackoverflow上的讨论,data.table在语法灵活性和performance上面更深一筹,dplyr则在易学性和SQL语句转换方面有独到之处。大猫自己在比较两者之后,选择了data.table。
如果希望对于两者的区别有更详细的认识,请大家直接看stackoverflow上的原帖,里面两大阵营支持者、包括两个包的作者,就两者孰优孰劣进行了友好而热烈的撕逼:
注1:图中,Arun是data.table的coauthor,Hadley是dplyr的author。
注2:帖子原址 http://stackoverflow.com/questions/21435339/data-table-vs-dplyr-can-one-do-something-well-the-other-cant-or-does-poorly
data.table如何学?
对于听力水平较好的同学,大猫直接建议去datacamp.com上看相关的video lecture(他们的课程是无字幕的哦)。大猫不建议去cousera.org上看R的相关教程,因为他们1)太基础;2)没有侧重介绍data.table或者dplyr的课程。
datacamp上关于R的课程有很多,如果对R一点都不知道,可以从introduction或者intermediate开始看。如果不想通过看视频入门,那大猫在这里只推荐一本入门教材“The art of R programming"。这本书纯讲编程,针对性很强,且有中文翻译版。但是中文翻译版有错误,英语水平好的建议网上搜索原版阅读。
“The art of R programming"不需要全部读完,基本把前面几章关于R基本操作的看完就可以了。
如果对R已经有一定了解,就可以跳过前戏,直接进入正题,学习其中的data.table的教程,如下:
datacamp上面还有一系列关于数据挖掘以及Python的教程,大猫看了以后也收益匪浅。
注:datacamp上面的课程是需要付费的,记得是25刀/月,学生优惠是9刀/月。大猫可以把自己的账号共享出来,如果有需要可以私信我(仅限浙大的小伙伴哦)。
如果听力不太好,建议去data.table在github上的官网(github是世界上最大的开源代码托管网站)阅读官方教程(链接后附)。建议按照顺序,先阅读HTML vignettes部分,然后阅读后面的example。教程目录见下:
大猫可以严肃地告诉大家,官网上面的教程虽然开头几篇有不少for rookie的部分,但是后面几篇难度不小,大家千万不能因为看了前面几篇教程觉得太简单而轻敌,因为data.table的核心,即key,是放在后面几篇教程中的!
假设你已经掌握了R的基本操作,且有一定编程基础,那么大猫预计你需要3个月左右的时间充分掌握data.table这个包。这个时间看似很长,但实际上一旦你掌握了这个包,你已经有能力完成你平时数据处理任务的80%了。
此外,大猫强烈建议无论你看不看视频,你都要把data.table官网上的教程全都看完,全都看完,全都看完,重要的事情说三遍!
data.table官网:https://github.com/Rdatatable/data.table
data.table官方教程:https://github.com/Rdatatable/data.table/wiki/Getting-started
data.table进阶
像学习所有语言一样,练习永远是第一位的,但是很多时候我们找不到合适的习题,这个时候大猫向大家隆重推荐stackoverflow上的R和data.table板块(大家只要在stackoverflow上的搜索栏键入”[r] [data.table]“就可以了)。在这里大家会提出自己在R编程中遇到的问题,很多vote数比较高的问题相当有代表性,小伙伴们完全可以拿来当练习题,思考自己的答案,然后和下面网友给出的答案进行对比。
大猫在stackoverflow上面搜集了很多常见问题,全都整理成了Onenote笔记,现在已经分成了11个区,共计100多页了,小伙伴们可以看一下:
本
期总结
本期大猫主要向大家介绍了R学习路径的第一部分:数据处理(data manipulation)的常用包data.table。但是,数据处理的最终目的是进行呈现,而且在当前这个人人都把大数据挂在嘴边的时代,数据可视化越发来得重要,因为只有通过数据可视化,那些抽象的数字才能被所有人理解。如果说数据挖掘是一门科学,那么数据可视化就更像一门艺术——毕竟很多时候,事物呈现的方式很大程度上决定了人们对它的评价。
正因为如此,在下一期的课堂中,大猫将向大家介绍数据可视化的两个包:ggvis和ggplot2。我是大猫,咱们下期见!