1. 下決心
如果只能學(xué)一個統(tǒng)計軟件养匈,必須是R。最重要的原因是R已經(jīng)被整合進(jìn)數(shù)據(jù)科學(xué)的生產(chǎn)鏈條當(dāng)中,其他任何統(tǒng)計軟件都無法相比二蓝,鼓搗數(shù)據(jù)的早晚要融入這個生態(tài)引镊,越早動手越好朦蕴,有點后悔兩年前第一次學(xué)的時候沒堅持下來。有這一條就足夠了弟头,其他必要性不多解釋吩抓,剛刪了以前那篇啰里啰唆的文章。
2. 先學(xué)赴恨、并盡快上手tidyverse
疹娶,還要完整地學(xué)
這條實在太重要了,其實應(yīng)該放到最前面伦连。以前拉拉雜雜看了很多資料雨饺,都沒有從STATA用戶的角度講該如何高效率地學(xué)習(xí)R,我自己也是走了很多彎路惑淳,第一次學(xué)習(xí)甚至放棄了额港。其實STATA用戶從tidyverse
入手會非常有優(yōu)勢,如果當(dāng)時就知道這一點歧焦,那一次或許就已經(jīng)學(xué)會了移斩。
2.1 tidyverse
是什么?
對于STATA用戶來說,R語言難學(xué)的地方在于自帶的版本(BASE)語法邏輯與STATA非常不一樣绢馍,想要延續(xù)STATA語法的思考方式向瓷,使用BASE基本上無法完成任何一個工作,學(xué)習(xí)成本非常高舰涌。
BASE語法的問題是有點過時猖任, 面對多個數(shù)據(jù)庫的操作非常啰嗦,所以Hadley Wickham就在R的基礎(chǔ)上開發(fā)出tidyverse
包舵稠,語法更為現(xiàn)代超升,并且覆蓋了統(tǒng)計軟件的全部基本功能入宦。從BASE過渡到tidyverse
,經(jīng)常會感嘆為什么以前不知道這個包室琢。
很好奇陳強(qiáng)為什么不在自己的教材里提這一點乾闰。
2.2 學(xué)習(xí)路徑
熟悉學(xué)習(xí)tidyverse
之前,仍然不能跳過學(xué)習(xí)R的基本語法盈滴,不然很多東西沒法搞懂涯肩。具體來說,STATA用戶從零學(xué)R巢钓,可以按下面這個步驟:
-
R語言實戰(zhàn)(R in Action), RIA
先看這本書的前兩個單元病苗。這本書的優(yōu)點是詳細(xì)講解了R(BASE)的操作方式和邏輯,是繼續(xù)學(xué)習(xí)的基礎(chǔ)症汹。缺點是介紹特定功能時會跨越不同的包硫朦,增加了新手學(xué)習(xí)的難度。 -
R for Data Science, R4DS by Hadley Wickham
這是講tidyverse
的教材背镇,就我看過的所有教材來講(不限于R或者統(tǒng)計咬展,上百本總有了),這本也有資格稱得上是最好的瞒斩。有統(tǒng)計和STATA的基礎(chǔ)破婆,這本學(xué)起來非常快胸囱。
這次學(xué)R是邊干邊學(xué)祷舀,直接用R干活,在此過程中強(qiáng)烈感覺到tidyverse
的語法理解起來更容易烹笔,于是RIA看到第七章裳扯,也就是第二單元結(jié)束,決定先停下箕宙,轉(zhuǎn)攻R4DS嚎朽。從第二單元開始铺纽,STATA柬帕、RIA和統(tǒng)計的基礎(chǔ)開始發(fā)揮作用,學(xué)習(xí)就變得非辰泼牛快了陷寝。
如果把R當(dāng)作一門課來講,RIA前兩個單元中我會只講數(shù)據(jù)處理其馏,繪圖凤跑、甚至基礎(chǔ)統(tǒng)計部份會暫時略去,講完數(shù)據(jù)處理就立刻轉(zhuǎn)到R4DS叛复,作圖部分留給R4DS里面的ggplot2
仔引。中高統(tǒng)計部分是否按照RIA來講還沒想成熟扔仓。
(2021.8月補充:雖然差不多所有有關(guān)數(shù)據(jù)的操作,tidyverse都提供了更現(xiàn)代的語法咖耘,但是R的原始語法還是有必要掌握翘簇,“R語言與深度學(xué)習(xí)”里用得還是非常多。)
3. 使用R的幫助文檔
以前寫過儿倒,第一次讀幫助文檔的時候版保,先花點時間搞清楚幫助文檔的結(jié)構(gòu),包括都有哪些部分夫否、哪個部分是什么功能彻犁、每個部分在文檔的什么位置出現(xiàn), 等等凰慈。閱讀時要注意R命令的函數(shù)思維方式汞幢,問自己結(jié)果變量、自變量微谓、參數(shù)分別是什么急鳄。
4. 對于碎片化技巧的學(xué)習(xí),看視頻優(yōu)于閱讀
不同于tidyverse
這種具有很大格局的包堰酿,R里面還有滿足特定功能碎片化的包疾宏,這種很適合用視頻學(xué)。舉個例子:我做的一個活兒需要把數(shù)據(jù)表導(dǎo)出成為html格式触创,表里面還包含多列類似Excel的迷你圖坎藐,在油管上找到了一個視頻,一個晚上就做出來了哼绑,順便還學(xué)會了Rstudio里如何寫snippets岩馍。
6. 收集中……
關(guān)于R曾經(jīng)受過兩次誤導(dǎo)。
第一次是十年前看到Angrist說他不愿意用R抖韩,因為R的統(tǒng)計包不如STATA多蛀恩,經(jīng)常需要自己編程, 而就連寫STATA的程序都會經(jīng)常犯錯誤茂浮,用R可能會花更多時間在抓bug上面双谆。當(dāng)時想,既然Angrist都覺得STATA夠用席揽,自己就沒必要學(xué)了吧顽馋。
第二次是去年,想在R里面找到類似_n
和_N
的工具幌羞,看到Nick說R的用戶很難理解這兩個工具寸谜,語氣有點酸,也讓我產(chǎn)生R很笨重的印象属桦。幸虧當(dāng)時沒全信熊痴,感覺像_n
和_N
這么好用的東西就算基礎(chǔ)R里沒有他爸,也會有人做個包,事實上dplyr
里面有相對應(yīng)的工具果善。
(2021/5/23更新)
把另一個活又重干了一遍讲逛,學(xué)過tidyverse,終于敢說自己會R了岭埠,正式進(jìn)入中級水平盏混。前幾個活在基本上啥也不會的狀態(tài),只靠懂?dāng)?shù)據(jù)結(jié)構(gòu)和不停查google惜论,居然敲出幾千行代碼许赃,而且還能運行出結(jié)果。有點佩服自己了馆类。
(2021/6/30更新)
R語言里面關(guān)于機(jī)器學(xué)習(xí)的書混聊,2018年之前寫的不要買。