1. 下决心
如果只能学一个统计软件,必须是R。最重要的原因是R已经被整合进数据科学的生产链条当中,其他任何统计软件都无法相比,鼓捣数据的早晚要融入这个生态,越早动手越好,有点后悔两年前第一次学的时候没坚持下来。有这一条就足够了,其他必要性不多解释,刚删了以前那篇啰里啰唆的文章。
2. 先学、并尽快上手tidyverse
,还要完整地学
这条实在太重要了,其实应该放到最前面。以前拉拉杂杂看了很多资料,都没有从STATA用户的角度讲该如何高效率地学习R,我自己也是走了很多弯路,第一次学习甚至放弃了。其实STATA用户从tidyverse
入手会非常有优势,如果当时就知道这一点,那一次或许就已经学会了。
2.1 tidyverse
是什么?
对于STATA用户来说,R语言难学的地方在于自带的版本(BASE)语法逻辑与STATA非常不一样,想要延续STATA语法的思考方式,使用BASE基本上无法完成任何一个工作,学习成本非常高。
BASE语法的问题是有点过时, 面对多个数据库的操作非常啰嗦,所以Hadley Wickham就在R的基础上开发出tidyverse
包,语法更为现代,并且覆盖了统计软件的全部基本功能。从BASE过渡到tidyverse
,经常会感叹为什么以前不知道这个包。
很好奇陈强为什么不在自己的教材里提这一点。
2.2 学习路径
熟悉学习tidyverse
之前,仍然不能跳过学习R的基本语法,不然很多东西没法搞懂。具体来说,STATA用户从零学R,可以按下面这个步骤:
-
R语言实战(R in Action), RIA
先看这本书的前两个单元。这本书的优点是详细讲解了R(BASE)的操作方式和逻辑,是继续学习的基础。缺点是介绍特定功能时会跨越不同的包,增加了新手学习的难度。 -
R for Data Science, R4DS by Hadley Wickham
这是讲tidyverse
的教材,就我看过的所有教材来讲(不限于R或者统计,上百本总有了),这本也有资格称得上是最好的。有统计和STATA的基础,这本学起来非常快。
这次学R是边干边学,直接用R干活,在此过程中强烈感觉到tidyverse
的语法理解起来更容易,于是RIA看到第七章,也就是第二单元结束,决定先停下,转攻R4DS。从第二单元开始,STATA、RIA和统计的基础开始发挥作用,学习就变得非常快了。
如果把R当作一门课来讲,RIA前两个单元中我会只讲数据处理,绘图、甚至基础统计部份会暂时略去,讲完数据处理就立刻转到R4DS,作图部分留给R4DS里面的ggplot2
。中高统计部分是否按照RIA来讲还没想成熟。
(2021.8月补充:虽然差不多所有有关数据的操作,tidyverse都提供了更现代的语法,但是R的原始语法还是有必要掌握,“R语言与深度学习”里用得还是非常多。)
3. 使用R的帮助文档
以前写过,第一次读帮助文档的时候,先花点时间搞清楚帮助文档的结构,包括都有哪些部分、哪个部分是什么功能、每个部分在文档的什么位置出现, 等等。阅读时要注意R命令的函数思维方式,问自己结果变量、自变量、参数分别是什么。
4. 对于碎片化技巧的学习,看视频优于阅读
不同于tidyverse
这种具有很大格局的包,R里面还有满足特定功能碎片化的包,这种很适合用视频学。举个例子:我做的一个活儿需要把数据表导出成为html格式,表里面还包含多列类似Excel的迷你图,在油管上找到了一个视频,一个晚上就做出来了,顺便还学会了Rstudio里如何写snippets。
6. 收集中……
关于R曾经受过两次误导。
第一次是十年前看到Angrist说他不愿意用R,因为R的统计包不如STATA多,经常需要自己编程, 而就连写STATA的程序都会经常犯错误,用R可能会花更多时间在抓bug上面。当时想,既然Angrist都觉得STATA够用,自己就没必要学了吧。
第二次是去年,想在R里面找到类似_n
和_N
的工具,看到Nick说R的用户很难理解这两个工具,语气有点酸,也让我产生R很笨重的印象。幸亏当时没全信,感觉像_n
和_N
这么好用的东西就算基础R里没有,也会有人做个包,事实上dplyr
里面有相对应的工具。
(2021/5/23更新)
把另一个活又重干了一遍,学过tidyverse,终于敢说自己会R了,正式进入中级水平。前几个活在基本上啥也不会的状态,只靠懂数据结构和不停查google,居然敲出几千行代码,而且还能运行出结果。有点佩服自己了。
(2021/6/30更新)
R语言里面关于机器学习的书,2018年之前写的不要买。