為什麼 R 比 MS Excel 更適合做資料分析?

發布於 2018-07-12 | 最後更新時間 2018-07-12

R 圖片來源:Wikipedia

從六月中開始放暑假後,也學了快三個月的 R 語言。有一天我爸瞄到我正在打 code,就問這是什麼。我跟他簡單解釋說 R 是一個用來進行數據處理和分析的程式語言,沒想到他反問我為什麼不用 Excel 做就好。對耶!好問題!老實說,我之前並沒有仔細想過這件事,只是覺得學了一個程式語言好酷好潮,以後如果需要統計分析時就多了一個工具可以使用,如此而已。

平常使用 Excel 的頻率也不高,最多就是會使用常見函數和樞紐分析而已,R 也只有學了短短的 70 多天,討論這個題目其實說服力有點薄弱。不過對於剛踏入資料科學領域的我來說,這確實是個值得思考的問題,藉此了解各種工具的優缺點,未來也才能合理地運用它們。

網路上已經有不少人討論過這個問題了,但我想結合自己學習和使用的心得,以研究人員、資料科學家(而非一般人)的角度,將 R 比 Excel 優秀的部分,依據我個人有感程度分成以下八點敘述:

一、再現性 (Reproducibility)

某人用了某份數據做出了 A 結論,另一人也可以用相同的數據做出類似於 A 的結論,這就稱為再現性,是科學研究中十分重要的概念。 在 R 中,包含資料的下載、讀取、清理和分析等操作,都是藉由「程式碼 (code)」執行,因此每個步驟都扎扎實實地以程式碼的形式被紀錄下來(甚至可以加上註解讓他人容易理解)。別人只要照著程式碼 run 一遍,便可得到相同的結果。而另一方面,Excel 是利用圖形使用者介面 (GUI, Graphical User Interface) 進行大部分的工作,幾乎所有的操作都可以藉由「滑鼠點擊」完成(VBA 例外),雖然簡單、方便、直覺,但除非我們詳細記錄了每一個操作步驟,不然別人是很難一眼看出我們是如何進行分析而得出結果的。

二、自動化

自動化原本就是機器和電腦的優勢,R 可以讓人類教導機器,學習如何依照我們的想法,將單一且重複的工作自動完成,提升效率。當遇到相同格式的資料和數據時,我們可以使用同一份 R Script 進行處理及分析。反觀 Excel,因為是 GUI-based 的軟體,每個步驟都要經由人工點擊的方式進行,所以即使拿到同樣格式的資料,我們還是要從頭開始一步步處理。

三、開源 (Open Source)

相對於微軟的付費產品 Excel,R 作為一個開源的語言,每個人都能免費下載,使用者們也可以貢獻自己的智慧結晶,將修改過或是全新的函數寫成套件 (package),擴充 R 的功能。2017 年初,CRAN 上的套件數量尚不足一萬個,但短短幾個月,已經上升到了 11418 個(截至 2017/09/15),而這個數目還不包含 Bioconductor 上的套件呢,可見使用 R 的社群仍持續蓬勃發展。

四、易於操作大型資料

大家應該多多少少都有遇過開啟 Excel 檔時,因為資料量過於龐大而當機的狀況。在現今這個充滿數據的時代,上萬筆、甚至上百萬筆的巨量數據集隨處可見,Excel 對於這種資料的處理可能就不是這麼適合。在 R 中,數據集匯入後,它會儲存在後台,儘管我們沒辦法看到看到資料的全貌(要另外輸入其他指令),但卻能加速資料操作的效率。

(然而不能忽略的是,R 能處理的資料大小也會受限於 RAM 的多寡。)

五、繪圖功能強大

Excel 的繪圖功能對於一般人來說其實已經很足夠了,經過一些方法美化後其實也還能看。但對於研究人員來說,想要將分析結果發表在期刊上,Excel 做出來的圖表還是力有未逮。而 R 的繪圖功能可以用「extraordinary」來形容,也許是因為 R 本來就大多是專業研究人員在使用吧。內建的繪圖函數已經十分優秀,另外又有人開發出 lattice 和 ggplot2 等套件,讓使用者能夠客製化自己想要的圖表,讓繪圖變得更容易且美觀。

ggplot2

六、可以讀取多種檔案格式

就我所知,Excel 只能開啟 xlsx、csv 和 txt 格式的檔案,但 R 除了這些格式之外,只要運用他人開發出來的套件,就能開啟如 json、xml、html 等格式的檔案。而通常 Open Data 或是網路爬蟲取得的資料也會是 csv、json 或 xml 的格式,此時 Excel 只有乾瞪眼的份。

七、統計方法強大

R 當初就是為了統計分析而開發出來的語言,也因此有許多 Excel 中沒有的進階統計方法,這對於研究人員來說是個不能忽視的部分。

(我統計太弱,寫不出什麼東西 XD)

八、版本控制

有時候我們會需要和他人協作專案,此時版本控制就顯得很重要了。使用 Git 能讓我們對資料夾進行版本控制。除了可以追蹤每個人更動的地方,它甚至可以回溯之前的版本,使錯誤發生時能即時挽回。而這個部分是 Excel 望塵莫及的。


那 Excel 什麼時候能派上用場?

說了這麼多 R 的優點,那我們是不是可以摒棄 Excel 了呢?好像也不是這樣。我認為若想要對手上資料有個初步認識時,Excel 能讓我們很快速地看到資料長怎麼樣,方便我們規劃後續操作。更現實一點的問題是,R 是個程式語言,學習曲線較陡峭, 如果不是需要進行學術研究或是工作上需要,一般人應該也沒有理由去學。

畢竟 Excel 的試算表 (speadsheet) 歷經了時間的考驗仍為多數人所使用,表示它還是不失為一個好設計,讓一般人能夠處理、分析資料,將結果視覺化呈現,使人了解資料背後的意義。正所謂「能捉老鼠的都是好貓」,不論是 R 還是 Excel,只要能根據不同狀況使用,幫助我們順利完成工作,那不都是好工具嗎?


如果你對於本文有任何想討論或分享的,歡迎來信到:terrance.365b8cbf@nicoric.com 找我聊聊!