
來源 | 伯樂在線
我妹妹正在念大四,主修社會學。她剛剛簽了下個學期一份不錯的分析員工作,對方告訴她工作中要用到 R 編程語言。她讓我在寒假時教教她,我欣然同意了。還有什么比這更好的方式來消磨明尼蘇達的冬天呢?[注1]
問題是:在原定教她的那天,我們倆都有空的時間只有一個小時。哎呀!
不過我還是接受了這個挑戰(zhàn),用一個小時向我的社會學家妹妹介紹R。下面就是我所做的事情。我沒有預先做功課,而且肯定犯了些錯誤,忽視了核心思想,糾纏于細枝末節(jié)。但妹妹給我的反饋是非常好(我確實對其他人的“一小時學會R”理念非常感興趣)
(1)下載R和RStudio
我對RStudio的印象不錯,對于初學者來說,它既方便又很有幫助,對專業(yè)人士也很有用。尤其對于初學者:鼠標指向-點擊式(point-and-click)的選項非常棒,工作區(qū)面板對于建立起對R環(huán)境的概念也非常有用。我甚至都不用再花精力向我妹妹介紹R默認的集成開發(fā)環(huán)境——我馬上就讓她下載了RStudio,不過你仍然需要下載普通版的R。下載之后,我意識到r-project.org網站真應該在設計上進行大修整,因為:(a)它不夠漂亮(b)如果你不知道什么是“CRAN鏡像”,下載R將是一件容易把人搞糊涂的事。
(2)控制臺和腳本
準備好之后,我們做的第一件事就是在控制臺中鍵入如下兩行代碼:
這并非純粹的“Hello World”,但它闡明了一些概念,比如”賦值”、”變量”和”求值”[注2]。
接著,我讓妹妹在一個R腳本文件中保存了上面那兩行代碼(我認為,在初學者開始使用一門語言時就教會他們如何正確地把代碼保存在腳本文件中是非常重要的)。然后,我教她怎么用Cmd-Enter組合鍵(譯者注:這是Mac OS的鍵位。在PC中,對應的組合鍵是Ctrl+Enter)在控制臺中執(zhí)行代碼。
在解釋這些內容的過程中,我意識到”控制臺”和”腳本”這類術語比較晦澀,所以我盡可能給出它們的明確的定義。我也不得不小心地使用那些含義確切的詞而非”REPL”或”prompt”這類詞匯
(3)注釋
(4)圖形
腳本、注釋和控制臺可能有點兒枯燥,所以到了這一步,該是從圖形中尋找點兒樂趣的時候了!這是我們繪制的一張圖:
教我妹妹理解這段代碼涉及解釋什么是函數(shù)(因為rnorm和hist都是函數(shù))、什么是函數(shù)的實參,以及為什么你可以通過名字引用實參卻不一定非得這樣做。
我還教她怎么保存一個圖形——借助圖形窗口中方便的“Export”按鈕,在RStudio中保存圖形非常容易。
(5)獲得幫助
我認為,“獲取幫助”是這類快速入門過程中需要掌握的最重要的概念。顯然你不可能在一個小時之內學會一切,所以,你真正需要的是當你用到時可以查找到相應信息的工具。下面是我介紹的語法:
考慮到查函數(shù)文檔對非程序員來說不太容易,這本來或許不是一個正確的策略。我考慮過強調google技巧的重要性(我在研究生院學到的最有用的東西),或者介紹StackOverFlow和R-help,但最后還是決定講解官方的文檔系統(tǒng)?!痹赗中我該怎么做X這件事”是初學者最常見的問題之一,我認為這個問題的答案可能應該是”使用函數(shù)Y( )”——所以重要的是能夠搞清楚如何使用函數(shù)Y( )。
在我看來,初學者最常見的另一個問題是”我遇到了出錯信息Z,怎么修正它?”。為解決這個問題,我演示一些常見的錯誤(對象未找到,意外的<X>常量,等等)并解釋了它們的含義。
(6)數(shù)據(jù)類型
查看幫助文檔讓我想起文檔中經常會提及某個函數(shù)的實參必須是某個特定的類型,因此我們或許應該討論一下數(shù)據(jù)類型。我介紹了:
向量
矩陣
數(shù)據(jù)框(dataframe)
就這樣,我們借助實例討論了一些數(shù)據(jù)類型,并順帶著學習了其他一些重要的內容,像怎么確定向量、什么是工作目錄,以及怎樣讀入數(shù)據(jù)文件。
(7)探索性數(shù)據(jù)分析
一旦你讀入了一個數(shù)據(jù)集,事情就開始變得有趣了。我們從中學習了一大堆東西,像怎么做基本的表格、遇到缺失數(shù)據(jù)如何處理,以及怎么擬合一個簡單的線性模型。這部分的內容相當有趣,以至于我妹妹開始主導學習過程了:不再是我說“我要教你如何做什么”,而是她主動問“嗯,我們能畫一個散點圖嗎?”或“你覺得我們可以把最優(yōu)擬合直線放到那個圖上嗎?”我真為此而感到高興——我希望這意味著她已全身心投入并樂在其中。
我們還進一步學習了圖形,像怎么作出好的直方圖,以及怎么在回歸直線上疊加散點圖。
1 hist(wages$wage, xlab = "hourly wage", main = "wages in our dataset", col = "purple")
2 plot(wages$age, wages$workyr, xlab = "age", ylab="years worked", main = "age vs. years worked")
3 abline(lm(wages$workyr ~ wages$age), col="red", lwd = 2)
好了,時間到。
我遺漏了些什么?哪些事能做得更好?我事后想到的有:
用[]取子集. 這是個關鍵知識點。它可以應用于我所介紹的所有數(shù)據(jù)類型,而且極為有用。我真希望當時有時間讓我妹妹做一個,比如只包含女性的工資直方圖
編程相關的東西:循環(huán)、if語句、用戶自定義函數(shù),等等。不過我覺得不教這些東西也沒問題——考慮到受眾,我是把R當作一個數(shù)據(jù)分析環(huán)境而非一種編程語言來教授。
保存.rda文件和/或工作區(qū)
安裝和載入包
其他數(shù)據(jù)類(比如列表)
其他(更好的?)幫助資源/提示/技巧
最后一點感想
總的來說,在一小時內介紹R讓我收獲了樂趣,而且我認為(希望?)我妹妹也是如此。臨別時我又給了她一些資料:這個,這個和這個,這些資料我都不是非常熟悉——但我知道,要想能夠用R分析實際數(shù)據(jù),所需的時間遠大于在我這兒的一個小時。我相信我已經覆蓋了大部分基礎知識,我妹妹也覺得這對她非常有幫助。我很樂意聽各位來談談你是如何應對”一小時內向非程序員介紹R”這個挑戰(zhàn)的。
腳注
注1. 即便對明尼蘇達來說,天氣也真的太冷了。溫度已在華氏0度(譯者注:攝氏-17度)左右徘徊了一個月之久。星期一的最高溫度是華氏-12度(譯者注:攝氏-24度)
注2.你可能注意到了,我用“=”來賦值,而且把這個習慣傳給了我妹妹。我考慮過這個問題并堅持這一用法,“<-”要多敲鍵盤,我發(fā)現(xiàn)它唯一有用的地方只是當我在system.time函數(shù)調用內進行賦值。
end
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到決策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10