你是如何自學R語言的?

最近在學習R語言,但是感覺效率不高,不知道大家是怎麼學的?有什麼好辦法

類似問題:該如何學習 R 語言? - 金融


今年年初開始接觸R語言,自學兼修課,學了一個學期,暑期在某上市互聯網公司找了一份純粹用R語言工作的的數據分析實習,現在應該可以說熟練掌握R語言了。我的學習路徑如下:

  1. 名師指導——學習coursera公開課;
  2. 巨人肩膀——瀏覽技術博客+幾本入門書籍;

  3. 社區幫助——很多牛人只是比你更善用搜索引擎;

  4. 三人行——找到一個一起學習的小夥伴;

  5. 實踐實踐實踐——用R完成Assignments,做助研,找一份數據分析實習。

一.公開課推薦

公開課首推http://coursera.Org上約翰.霍普金大學的數據科學系列課程。該系列完全使用R作為分析工具,輕鬆引領你從R的初學者轉變為R的開發者。

該系列課程包含如下幾門課。

1.《數據科學家的工具箱》

該課程主要介紹了數據科學家常用的一些工具。包括R、 RStudio、 Git 、Github ,這裡強烈推薦RStudio,作為R的一個集成開發環境(IDE), 它可以在Latex、 PDF、 markdown、 html 中遊刃有餘,並且是個強大的Literate Programming 工具。除了以上提及的強大工具之外,還介紹了數據的類型、數據分析的方法過程、以及數據科學的一些知識點。

2.《R語言程序開發》

主要內容包括:1)R概述,R的數據類型和對象,數據的讀寫操作;2)R中的控制流,函數式編程,作用域,時間數據類型;3)循環函數,檢查代碼漏洞的方法;4)數據模擬實現,代碼風格規範。

3.《獲取和整理數據》

完成這門課程將獲得技能:1)從各種資源獲取數據;2)數據清洗的原則;3)數據整理的工具與技巧。

4.《探索性數據分析》

完成這門課程將收穫:1)運用R中的base,lattice,ggplot2等繪圖系統進行數據的可視化展示;2)對不用類型的數據運用基本的數據展示原則創造豐富多樣的分析圖;3)基於特定問題出發,運用探索高維數據的統計技巧,創造多維度數據的可視化方式。

5.《可重複性研究》

通過這門課程,你將學會:1)使用Rmarkdown撰寫文檔;2)在分析報告中嵌入R代碼;3)用knitr等相關工具編譯Rmarkdown文檔;4)進行可重複性的數據分析研究。

6.《統計推斷》

這門課主要介紹統計推斷的基礎。可以收穫:1)統計推斷的概覽;2)進行統計推斷的模型假設;3)複雜統計推斷的技巧。

7.《回歸模型》

這門課教會學生:1)如何進行擬合線性模型,如何進行殘差分析;2)進一步探索如何引入啞變數解決特殊的模型設定問題;3)介紹廣義線性模型,特別是Poisson回歸和Logistic回歸。

8.《實用機器學習》

完成這門課將收穫:1)經典機器學習演算法;2)如何應用多種機器學習工具;3)如何對真實數據進行模型評估和預測。

9.《數據產品開發》

內容涵蓋:1)如何創造統計產品以進行互動式探究;2)重點學習如何探究不確定性的統計結果;3)如何創造Shiny應用,以及數據產品相關的R擴展包。

二.技術博客和書籍推薦

  • R-bloggers:R-bloggers | R news and tutorials contributed by (573) R bloggers
  • R and Data Mining: http://www.rdatamining.com/
  • 肖凱老師的個人博客:http://xccds1977.blogspot.com/,肖凱老師推薦了十幾本R參考書。

  • 書籍:《R語言實戰》,《R語言編程藝術》,《機器學習——實用案例解析》,《ggplot2數據分析與圖形藝術》,這些書都有中文版。

三.社區幫助

l R自帶的幫助文檔;

l R Journal: Welcome. The R Journal,對研究某個包非常有幫助;

l 一個神奇的網站:http://Stackoverflow.com,牛人聚集,99.9%的R問題都可以在上面找到你想要的答案;

l Stat.stackexchange.com;

l R Mailing List: https://stat.ethz.ch/mailman/listinfo/r-help;

l Talk Stats: Statistics Help @ Talk Stats Forum;

l Google,善用英文搜索;

四.小夥伴

找到一個志同道合的同學一塊學習,一塊在coursera上刷Assignments,互相幫助檢查代碼,互相督促看書敲實例代碼進度,比較容易堅持下去,在此,感謝hetal鏈。

五.實踐實踐實踐

我在學校選修了兩門R數據分析相關的課程,並且給老師做研究助理,用R完成老師布置的編程任務,學以致用,非常高效率。暑期的時候找了一份數據分析實習,實踐兩個月,對代碼的規範化和可重用性的重要性有了更深刻的理解。


把GNU R的源代碼看了一遍。。。

不看不知道啊,各種TODO和FIXME啊,老爺子們看來是干不動了。


前面各位都說得有道理。不過個人感覺Coursera上的R Programming這門課對像我這樣的純新手來說並不是非常合適,因為從第三周開始編程的難度跟前一周完全不在一個等級,代碼量也很大很難著手,很容易有挫敗感。後來我在另一個平台edX上發現了一門叫Introduction of R Programming的課,該課程由微軟開發,內容也更詳細,總共分7章,學習的難度要小很多,感覺更容易上手。所以,我個人建議可以先學習edX上的課程,之後再通過Coursera進行鞏固和提高。

P.S. swirl包是個好東西,值得反覆練習。

Hope it helps.

------------2016.04.29更新------------------------

http://Datacamp.com 這個網站很有用,適合從新手一步步走,親測有效。但是並不完全免費,過了試用版本後25刀每月或者250刀每年。不算大支出,但會讓人更有學習的動力(廢話,刪掉)。

P.S.界面為英文,建議英語比較好的孩子們選擇(括弧笑)


看書+coursera課程+大牛博客


貼幾個入門的學習網站,目前自學期間感覺講的非常簡潔,便於入門。特別適用於統計學基礎薄弱的小白學習的系列。社科裡面R語言的學習基本上是經濟類和金融類較多,之前看到的帖子中貼出來的網站也是比較適合有較好統計學基礎或是編程基礎的。本人是剛入門學習定量的社會學PHD一枚,覺得這些網站的學習很好的提升了我繼續定量學習的自信(微笑臉),而且沒有其他各種炫技和幺蛾子,就是扎紮實實的在手把手教你,基本上全面到將你對待為一隻白痴,親測非常靠譜。(當然,有強大統計學經濟學背景的學霸們請略過此貼。)

首先的預備工作是安裝了R程序,Rstudio,並且觀看了如下免費入門視頻(可以對照相關的命令操作一下)。如果可能,你可以買一本叫做《R語言實戰》的入門書,做些預習。

以下的幾個網站的學習順序從易到難,其中在第一個鏈接中的視頻手把手教大家安裝R以及Rstudio,非常貼心使用(註:以下網站的學習課程全部免費,可進行自行學習)

  • http://www.xueqing.tv/course/1
  • http://www.xueqing.tv/course/64
  • http://www.xueqing.tv/course/31
  • http://www.xueqing.tv/course/66
  • http://www.xueqing.tv/course/67
  • http://www.xueqing.tv/course/69

在以上課程掌握的較好的情況下,推薦查看數據大神李丁老師的網站(此網站持續更新中……)

網站地址如下:

http://www.istata.cn/?p=330

當然,想做定量社會學研究的童鞋肯定之前有拜讀過謝宇大神的《社會學方法與定量研究》、《回歸分析》,這兩本是最為經典的社會學定量分析的入門之作,深入淺出,可以澄清你的很多困惑與疑慮,應該是想要進行定量研究的必讀經典。

好了~網站的搬運到此結束,歡迎相關學科的童鞋一起討論學習,就醬。:)


swirl包過量三遍,《R語言實戰》前六章擼兩遍,簡單粗暴入門法!


上了一節課……

學期開始的時候教授甩了個pdf文件名叫「R Help」……

興奮激動熱血澎湃的我用顫抖的手指按下滑鼠的時候……

看到了一張google搜索欄literally寫著「R Help」的網頁瀏覽頁截圖……

圖樣圖森破啊


先介紹一些書,認真看看。

初級入門

《An Introduction to R》,這是官方的入門小冊子。其有中文版,由丁國徽翻譯,譯名為《R導論》。《R4Beginners》,這本小冊子有中文版應該叫《R入門》。除此之外,還可以去讀劉思喆的《153分鐘學會R》。這本書收集了R初學者提問頻率最高的153個問題。為什麼叫153分鐘呢?因為最初作者寫了153個問題,閱讀一個問題花費1分鐘時間,全局下來也就是153分鐘了。有了這些基礎之後,要去讀一些經典書籍比較全面的入門書籍,比如《統計建模與R軟體》,國外還有《R Cookbook》和《R in action》,本人沒有看過,因此不便評論。

高級入門

讀了上述書籍之後,你就可以去高級入門階段了。這時候要讀的書有兩本很經典的。《Statistics with R》和《The R book》。之所以說這兩本書高級,是因為這兩本書已經不再限於R基礎了,而是結合了數據分析的各種常見方法來寫就的,比較系統的介紹了R在線性回歸、方差分析、多元統計、R繪圖、時間序列分析、數據挖掘等各方面的內容,看完之後你會發現,哇,原來R能做的事情這麼多,而且做起來是那麼簡潔。讀到這裡已經差不多了,剩下的估計就是你要專門攻讀的某個方面內容了。

先介紹到這裡, 歡迎來討論交流


我剛開始學習和使用R語言是從讀研開始的,到現在也有5年多了。R語言可以做很多事,包括數據處理、可視化、數據挖掘等,而且關於R語言的書籍有非常多,對於初學者可能會比較迷茫。我對學習方法和感受也做了整理,包括基礎篇、可視化篇和數據挖掘篇,更多內容可以至老司機帶你分享R語言學習路徑查看。


學校教過 ,但是覺得Eview 好用


重要的實踐 實踐 實踐。。個人覺得看完《R語言實戰》就足夠了,其它的無非是一些常用包,當然基礎知識線代、概率論炒雞重要。然後就去kaggle上面擼比賽,看看大腿們是怎麼用語言解決實際問題的。沒有實踐,學它有什麼用 0.0


數模隊友要做統計題,所以就刷完R語言實戰,然後,再就是沒事玩玩一些包,然後就這樣,一直沒機會去用,所以處於半廢狀態。。。。。。別去看課程,啰嗦到極致,倒不如自己看書,自己一個個的打書上的例子,然後去驗證自己的理解。 說到底,對語言這種玩意,沒需求學了也記不住。。。。。2333333


R軟體是一款集成了數據操作、統計和可視化功能的優秀的開源軟體。R軟體具備高效的數據處理和存儲功能,擅長數據矩陣操作,提供了大量適用於數據分析的工具,支持各種數據可視化輸出。R軟體的一大優勢是分析人員可利用簡單的R程序語言描述處理過程,以構建強大的分析功能。此外,R軟體具備良好可擴展性,來自世界各地開源社區的研究者為其提供了各種豐富的工具包。由於R軟體能結合各種挖掘演算法,有效地簡化數據分析過程,適用於數據挖掘領域。

R語言的前世今生

R是統計領域廣泛使用的誕生於1980年左右的S語言的一個分支。可以認為R是S語言的一種實現。而S語言是由ATT貝爾實驗室開發的一種用來進行數據探索、統計分析和作圖的解釋型語言。最初S語言的實現版本主要是S-PLUS。S-PLUS是一個商業軟體,它基於S語言,並由MathSoft公司的統計科學部進一步完善。後來紐西蘭奧克蘭大學的RobertGentleman和RossIhaka及其他志願人員開發了一個R系統。由「R開發核心團隊」負責開發。R可以看作貝爾實驗室開發的S語言的一種實現。當然,S語言也是S-Plus的基礎。所以,兩者在程序語法上可以說是幾乎一樣的,可能只是在函數方面有細微差別,程序十分容易地就能移植到一程序中,而很多一的程序只要稍加修改也能運用於R。

R語言存在即合理

(一)免費開源

目前存在各種挖掘軟體,主流的商用挖掘工具比如Unica、SAS/EM、InsightfulMiner、IBMIM、Matlab和SPSS等,這些軟體特點是面向通用挖掘問題,功能較為完善,具備較好的性能。但一般都存在可擴展性不強、成本較高等缺點。開源軟體能有效克服這些缺點,比較著名的包括Weka、YALE、KNIME、Orange和R等。R軟體是一款集成了數據操作、統計和可視化功能的優秀的開源軟體。,來自世界各地開源社區的研究者為其提供了各種豐富的工具包。由於R軟體能結合各種挖掘演算法,有效地簡化數據分析過程,適用於數據挖掘領域。

(二)易學、方便

很多人第一門編程語言就是令人咋舌的C語言,因為它注重細節,可以訓練人的編程思維。可是,對於很多研究人員,他們的側重點就在理論、思想上,讓他們用C語言編寫自己好不容易證明出來的演算法,簡直比登天還難。那麼有沒有哪一門編程語言把數據科學家從繁重的編程里解脫出來,把焦點移向理論研究呢。這時候,Matlab語言出現了,Matlab以其強大的向量化和矩陣計算,解決了這個問題。如果說Matlab語言的出現可以解決這個問題,那麼這個語言的出現就把解決這個問題高度推向了頂峰,那就是R語言。學過R語言的人都知道,它簡單易學,解釋型的語句,一看就會,通俗易懂。包里內置模型所需的數據集,可能有時候一行命令就能完成從數據到模型構建,再到結果可視化輸出的過程,極大地方便了數據科學家地研究。而且學會後還可以根據現有的包的函數編寫出更適合自己的函數模塊,體現出R語言的強大的可擴展性。

(三)功能強大

作為第二個向量式編程語言(Matlab是第一個),R是一套完整的數據處理、計算和製圖軟體系統。其功能包括:數據存儲和處理系統;數組運算工具(其向量、矩陣運算方面功能尤其強大);完整連貫的統計分析工具;優秀的統計製圖功能;簡便而強大的編程語言:可操縱數據的輸入和輸出,可實現分支、循環,用戶可自定義功能。

R語言流行指數

R編程語言被廣泛應用在統計和科學領域,在雲計算領域處於領先地位。在Redmond最近發布的編程語言排名中,把R列為排在第13位。IEEESpectrum推出的最流行的編程語言排行榜中,R語言在數據語言中位列第三TiobeSoftware的資料顯示,今年1月份,R成為排在第18位的用戶最多的編程語言,1年前它僅排在第44位。PYPL(編程語言流行指數)依據Google上關於語言教程的搜索頻率進行統計。從全球搜索引擎流行度來看,R語言排名第9。

R語言在當下的廣泛應用

醫療

醫療重有一種分析叫做生存資料Metaeta分析,生存分析(survivalanalysis)是將患者的結局和生存時間結合起來分析的一類統計方法 。

R軟體中用於Meta分析的程序包主要包括Meta、rmeta和metafor等。該程序包可用於分析二分類資料、連續性資料,也可以用於相關係數、生存分析數據等。生存資料的Meta分析越來越普遍,獲取到HR及其95%CI等指標後,如何計算合併HR是關鍵的一步。生存資料的Meta分析越來越多。從原始文獻計算出風險比(HR)及其95%可信區間,實際頻數和理論頻數的差值(O-E)及其標準差後,可以使用R軟體計算合併HR,從而計算出不同年齡段的病人的存活率。RevMan軟體簡單易學,但存在一定的局限;R軟體功能強大,靈活多樣,能夠繪製多種圖形,但需要進行適當的編程。

數據挖掘

挖掘步驟主要有:

(1)、任務定義。通過分析確定挖掘任務,要求能夠準確、簡練描述任務信息。

(2)、數據準備。數據挖掘是建立在數據上的操作,需要獲取數據、提取數據、數據轉換(比如在文本挖掘中的詞向量化等)。

(3)、挖掘建模。根據挖掘任務,選擇好的模型對數據對象進行刻畫,描述。

(4)、模型評估。針對建模結果,結合實際背景、意義,對問題做出評估、甚至在需要時給出合理的解決方案。

開源R軟體集成了各種的數據分析和可視化方法,具備強大的數據分析功能和良好的可擴展性,適用於數據挖掘。比如,結合城市主要經濟指標的數據挖掘案例,給出了R軟體在挖掘過程中各主要階段的應用方法;數據準備階段包括數據抽取、數據選擇與統計分析應用;挖掘建模階段給出了聚類和分類的典型挖掘應用;模型評估階段給出了決策樹的評估方法;從簡潔的R語言腳本設計和良好的分析效果,這都展示了R軟體的基本特點和在數據挖掘應用中的優勢和應用 。

教學實驗

其實,這還是R語言是一門免費語言的體現。舉個例子,眾所周知,微軟的一套office辦公軟體價格還是不菲的,很多學生偶爾用一下寫東西,難道還要花幾百塊錢買一個office嗎?實驗設計與數據處理課程是工科各專業必修的基礎課,是一門理論性、應用性和實踐性很強的方法論學科,作為自然科學研究方法論領域中一個分支,它以概率論、數理統計、專業技術知識和實踐經驗為基礎,為以後從事科學研究、工程試驗、工程設計工作的學生提供基本的訓練,培養學生正確確定科研、工程試驗方案和進行數據處理的能力。當前,試驗設計和數據分析處理幾乎全部採用軟體完成 。商業軟體諸如SAS、SPSS、Matlab等在試驗設計與數據處理中應用較多。鑒於該類軟體價格不菲,需要較大的成本,只是教學實驗暫時用一下,因此探索自由軟體在《試驗設計與數據處理》教學中應用R,節約了成本,也失對培養學生科學研究和創新能力、實踐能力具有重要意義的初衷。

電子商務

隨著電子商務的發展,對配送中心的服務性、快捷性、低成本以及柔性化的要求更高,而通過訂單—庫存分析協調需求和庫存之間的關係更為重要。自2011年「雙十一」大促引起巨大轟動以來,「雙十一」、「雙十二」、「618」、周年慶、年終慶等各個促銷時點被各大電商企業爭相效仿,每年都有多個集中大促的時點不斷掀起一個又一個消費熱潮,網購促銷已經逐漸常態化 。而促銷季的銷售數據往往會成倍增長甚至連翻數倍,要保證促銷季客戶的滿意度,除了高效的物流外,無疑足量的庫存才是強有力的後盾,然後足量庫存並不意味著要儲備超大容量的庫存,適量則最佳。因此,網購促銷常態化需要精準的訂單需求預測做保障基於R軟體的高效性,可擴展性和處理數據的海量性,選擇R軟體對電子商務企業前端的客戶信息進行數據分析,從而減少電商物流企業庫存與需求不匹配造成的巨額成本。

情感

社會媒體成為人們表達情感的重要載體。微博作為傳播較廣泛的社會媒體,已經成為了解民眾情感的重要渠道。面對既龐大又看似雜亂無章的微博數據,如何有效地通過已有數據提取有價值的信息進而分析網路輿情,並以更加清晰的方式呈現,成為當前備受關注的重要研究領域 。利用R語言強大的自然語言處理包,可以很容易完成從模型建立到結果可視化的過程。針對已有的情感分析研究多側重在情感的傾向性方面,缺乏對各類情感的詳細描述,不能形象直觀地反映社會群體的情感變化的問題,提出一種基於依存句法和人工標註相結合的情感分析方法。該方法採用三維立體的人臉表情進行情感分析,形象地呈現社會群體的情感變化。對於不同的社會事件,以可視化方式來展現不同地區微博群體的情感。實驗結果表明,該模型可以有效地描述人群情感,研究結果為基於大數據的網路輿情分析提供了一種新思路。

R語言現狀

(1)、微軟收購R編程語言

微軟負責機器學習的副總裁JosephSirosh在博客中寫道,「金融、製造、健康、零售、學術研究在內的各個領域需要強有力的數據分析工具來支持他們做出數據導向的決策……R語言能夠幫助僱員去填補公司數據分析上的空白」。被收購之後,RevolutionAnalytics表示將持續支持R語言的開源項目並提供給客戶訂閱式的技術支持服務。

(2)、Google發布R語言格式規範內部指導

2016年9月,Google已發布R語言的15格式規範內部指導,這說明R語言的使用在Google內部也得到了較為廣泛的認可,並有可能擴大使用規模,所以統一發布這個指導,以規範今後的代碼。

R語言以其簡單易學、免費開源的特性,正在各個領域發揮著越來越重要的作用。R語言的出生不是曇花一現,那麼我們也有理由相信:它的輝煌的成長過程必將是前路寬闊,R語言的寒武紀時代已然來臨。因為:現代數據科學需要它,社會發展需要它。

學習資源:

一個專註於R語言學習的英文網站:RPubs

中文網站:http://r.cj318.cn/

視頻學習:http://study.163.com/course/courseMain.htm?courseId=1004331028


推薦閱讀:

什麼情況下才應該使用存儲過程而不是用程序來對數據做操作?
程序員們怎麼理解各種計算機書里抽象的概念呢?
c++大作業怎麼用windows API 做個窗口程序?不用MFC或者是QT這些工具。
如何評價noip2016初賽題?
如何練習編程的手速?

TAG:編程 | R編程語言 |