《R語言經(jīng)典實例(原書第2版)》的第2版涵蓋了277個R語言實用方法,可以幫助你快速而有效地使用R進行數(shù)據(jù)分析。R語言給我們提供了統(tǒng)計分析的一切工具,但是R本身的結(jié)構(gòu)可能不容易掌握。
《R語言經(jīng)典實例(原書第2版)》提供的面向任務(wù)的R語言實用方法涉及從基本的分析任務(wù)到輸入和輸出、常用統(tǒng)計分析、繪圖、線性回歸等內(nèi)容,它們可以讓你馬上應(yīng)用R高效地工作。
每一個R語言方法都專注于一個特定的問題,隨后的討論則對問題的解決方案給出解釋,并闡釋該方法的工作機理。
對于R的初級用戶,《R語言經(jīng)典實例(原書第2版)》將幫助你步入R的殿室;對于R的中級用戶,《R語言經(jīng)典實例(原書第2版)》將加深你對R的理解并拓展你的視野。
通過《R語言經(jīng)典實例(原書第2版)》,可以使你的分析工作順利完成并學(xué)習(xí)更多R語言知識。
《R語言經(jīng)典實例(原書第2版)》主要內(nèi)容:
建立向量、處理變量,以及執(zhí)行其他基本函數(shù)。
簡化數(shù)據(jù)的輸入和輸出。
處理矩陣、列表、因子和數(shù)據(jù)框等數(shù)據(jù)結(jié)構(gòu)。
分析概率、概率分布和隨機變量。
計算統(tǒng)計量和置信區(qū)間,進行統(tǒng)計檢驗。
創(chuàng)建各種圖形。
構(gòu)建線性回歸和方差分析(ANOVA)等統(tǒng)計模型。
探索高級統(tǒng)計技術(shù),如聚類分析等。
本書通過270多個應(yīng)用實例,闡明了如何用R快速、有效地進行數(shù)據(jù)分析。主要內(nèi)容包括軟件安裝和幫助、基礎(chǔ)知識、軟件導(dǎo)覽、輸入與輸出、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)轉(zhuǎn)換、字符串和日期、統(tǒng)計概論、圖形、線性回歸和方差分析、實用技巧、高級數(shù)值分析和統(tǒng)計方法、時間序列分析等。R語言功能強大,可以幫你處理一切統(tǒng)計工作,但是其結(jié)構(gòu)卻不容易掌握,本書通過簡潔的、面向任務(wù)的實例,可以幫助讀者快速利用R解決實際問題。
R軟件是進行統(tǒng)計分析、繪圖和統(tǒng)計編程的強大工具,F(xiàn)在成千上萬的人用它來進行日常的重要統(tǒng)計分析。R是一個自由、開源的軟件系統(tǒng),它是許多聰明、勤奮工作的人的集體工作成果。R有超過10 000個軟件包插件,是其他商業(yè)統(tǒng)計軟件包的強勁競爭對手。
但是,剛開始使用R軟件時可能感到無從下手。對許多人來說,即便是一些基本的任務(wù),R的實現(xiàn)也不是很明顯。當(dāng)了解了R的使用方法后,簡單的問題自然能得心應(yīng)手地解決,但學(xué)習(xí)“如何”使用R的過程有時會讓人感到發(fā)狂。
本書介紹了如何使用R軟件的一些方法,其中每一個方法對應(yīng)解決某個特定的問題。介紹這些方法的途徑為:首先給出待解決的問題,然后給出解決方案的簡單介紹,之后再給出對解決方案的討論,深入剖析解決方案,給出該方案的原理。我們知道這些方法實用,也知道這些方法可行,因為我們也在使用它們。
這些方法所涉及的范圍較為廣泛。首先,從基本的任務(wù)開始介紹,然后介紹數(shù)據(jù)的輸入和輸出、基本統(tǒng)計、圖形以及線性回歸。與R有關(guān)的工作都或多或少地涉及本書介紹的方法。
通過學(xué)習(xí)本書,初學(xué)者能快速了解R并上手。如果你對R軟件有一定的了解,那么本書也能幫助你鞏固已學(xué)的知識,拓寬你的思維(例如,“下一次我應(yīng)該怎么使用Kolmogorov-Smirnov檢驗”)。
從嚴格意義上來說,本書并不是一本關(guān)于R軟件的教程,但你將會從中學(xué)習(xí)到許多R軟件的應(yīng)用技巧。本書也不是一本關(guān)于R的參考手冊,但它確實包含了許多實用的內(nèi)容。本書更不是一個R軟件的編程指南,但書中很多方法都可以應(yīng)用到R的編程腳本中。
最后,本書不是統(tǒng)計學(xué)理論的參考書。本書假設(shè)讀者對統(tǒng)計理論和方法有一定的了解,想知道的是如何在R軟件中實現(xiàn)。
方法
本書介紹的大部分方法,都是由一兩個R函數(shù)或命令來解決某一特定問題。需要注意的是,書中不會對某一函數(shù)的全部能力進行詳細解釋,而是僅介紹那些與需要解決的問題有關(guān)的函數(shù)能力。R軟件中幾乎所有的函數(shù)所具備的能力都遠遠不止本書中所介紹的,其中有的函數(shù)具有更強大的能力。因此強烈建議讀者閱讀這些函數(shù)的幫助頁面,你可能會從中得到不少收獲。
每個方法都為讀者提供了解決某個問題的一條途徑。當(dāng)然對于每個問題有可能存在多個正確的解決方案。在這種情況下,我們一般會選擇最為簡單的方法。對于書中給出的任何問題,你自己或許可以找到其他一些解決方案。本書著重介紹解決問題的方法,類似“菜譜”書,而不是R軟件的大全書。
尤其是,R軟件有大量的添加包,這幾千個R添加包都可以從網(wǎng)絡(luò)下載。這些包中含有許多替代算法和統(tǒng)計方法。本書側(cè)重于R基礎(chǔ)發(fā)布版所帶的核心功能,以及幾個重要的放在一起統(tǒng)稱為tidyverse的添加包。
tidyverse最簡潔的定義來自Hadley Wickham—tidyverse的創(chuàng)始人和它的核心維護者之一:
“tidyverse是一組協(xié)調(diào)工作的添加包,它們共享通用數(shù)據(jù)表達式和API設(shè)計。tidyverse包旨在使其易于通過單個命令安裝和加載核心包。了解tidyverse中的所有添加包以及它們?nèi)绾谓M合在一起的最佳方式是閱讀R for Data Science(http://r4ds.had.co.nz)一書!
對術(shù)語的說明
每個方法旨在迅速地解決問題,而非長篇大論地進行論述。因此我們有時候會采用一些術(shù)語來簡化相關(guān)內(nèi)容的解釋,這些術(shù)語有時候可能不精確,但是正確的。比如,術(shù)語泛型函數(shù)。我們把函數(shù)print(x)和plot(x)稱為泛型函數(shù),原因是它們能適當(dāng)?shù)靥幚矶喾N輸入?yún)?shù)x。計算機科學(xué)家可能會質(zhì)疑這一術(shù)語,因為嚴格來說這些都不是簡單的“函數(shù)”,它們是多態(tài)方法并且動態(tài)調(diào)度。但是,如果我們仔細地精確定義所有這樣的技術(shù)細節(jié),那么關(guān)鍵的解決方案將會埋沒于這些細枝末節(jié)的技術(shù)問題中。所以為了便于閱讀,我們就將它們稱為函數(shù)。
另一個例子是統(tǒng)計學(xué)中的假設(shè)檢驗術(shù)語。若使用概率論的嚴格定義,就會使讀者難以清晰理解這些檢驗的實際應(yīng)用,所以我們以更通俗的語言來描述各個統(tǒng)計檢驗。更多有關(guān)假設(shè)檢驗方法的細節(jié),請查看第9章的簡介部分。
我們的目標(biāo)是用通俗易懂而非嚴格的正式語言,讓R軟件能被更多的讀者所理解和接受。因此希望各個領(lǐng)域的專家對于我們所給出的某些并不嚴謹?shù)男g(shù)語與定義予以諒解。
軟件及平臺說明
雖然R軟件時常進行有計劃的版本更新,但其語言定義和核心實現(xiàn)是穩(wěn)定的。本書所介紹的方法適用于基礎(chǔ)發(fā)布版的任何最新版本。
有些方法對于操作平臺有特殊的要求,我們會在文中對其加以標(biāo)注,這些方法大多數(shù)是一些軟件本身的問題,如程序的安裝和配置。據(jù)我們所知,書中的所有其他方法在R的三個主要平臺(即Windows、macOS和Linux/Unix)上都能運行。
其他資源
如果你想進行更深入的閱讀,下面是一些進一步閱讀的建議。
網(wǎng)絡(luò)
R項目網(wǎng)站(http://www.r-project.org)匯集了所有R軟件的相關(guān)資源,從中可以下載R程序代碼、R添加包、文檔、源代碼等。
除了R項目網(wǎng)站以外,我們建議使用一個針對R軟件的搜索引擎,比如Sasha Goodman開發(fā)的RSeek搜索引擎(http://rseek.org),也可以使用谷歌這樣的通用搜索引擎,但在搜索“R”關(guān)鍵詞時可能會得到許多無關(guān)的搜索結(jié)果。更多有關(guān)網(wǎng)絡(luò)搜索的細節(jié)參見1.11節(jié)。
瀏覽博客也是一種學(xué)習(xí)R軟件和
J. D. Long在紐約市的Renaissance Re公司工作。他是Python、R和AWS的狂熱用戶,喜歡使用各種專業(yè)術(shù)語,并且經(jīng)常在R會議上發(fā)表演講。他是芝加哥R User Group的創(chuàng)始人。
前言1
第1章 R入門和獲得幫助9
11 下載和安裝R軟件10
12 安裝RStudio12
13 開始運行RStudio13
14 輸入R命令14
15 退出RStudio16
16 中斷R正在運行的程序17
17 查看幫助文檔18
18 獲取函數(shù)的幫助文檔20
19 搜索幫助文檔22
110 查看R添加包幫助信息23
111 通過網(wǎng)絡(luò)獲取幫助24
112 尋找相關(guān)函數(shù)與添加包27
113 搜索郵件列表28
114 向Stack Overflow或社區(qū)的其他網(wǎng)站提交問題29
第2章 基礎(chǔ)知識32
21 在屏幕上顯示內(nèi)容32
22 設(shè)定變量34
23 列出所有變量35
24 刪除變量37
25 生成向量38
26 計算基本統(tǒng)計量40
27 生成數(shù)列42
28 向量比較44
29 選取向量中的元素45
210 向量的計算48
211 運算符優(yōu)先級問題50
212 減少輸入,得到更多命令52
213 創(chuàng)建函數(shù)調(diào)用的管道53
214 避免常見錯誤56
第3章 R軟件導(dǎo)覽61
31 獲取和設(shè)定工作目錄61
32 創(chuàng)建一個新的RStudio項目62
33 保存工作空間64
34 查看歷史命令記錄65
35 保存先前命令產(chǎn)生的結(jié)果66
36 通過搜索路徑顯示已加載的軟件包67
37 查看已安裝的R包列表68
38 使用R包中的函數(shù)69
39 使用R的內(nèi)置數(shù)據(jù)集71
310 從CRAN網(wǎng)站安裝R包72
311 從GitHub網(wǎng)站安裝R包74
312 設(shè)定或改變默認CRAN網(wǎng)站鏡像75
313 運行腳本76
314 批量運行R代碼77
315 找到R的主目錄80
316 R的自定義81
317 在云端使用R和RStudio84
第4章 輸入與輸出86
41 使用鍵盤輸入數(shù)據(jù)86
42 顯示更少的位數(shù)(或更多的位數(shù))87
43 將輸出結(jié)果重定向到文件89
44 顯示文件列表90
45 解決無法在Windows中打開文件的問題92
46 讀取固定寬度的數(shù)據(jù)記錄93
47 讀取表格數(shù)據(jù)文件96
48 讀取CSV文件99
49 寫入CSV文件101
410 從網(wǎng)絡(luò)中讀取表格或CSV格式數(shù)據(jù)103
411 從Excel文件讀取數(shù)據(jù)104
412 將數(shù)據(jù)框?qū)懭隕xcel文件105
413 從SAS文件讀取數(shù)據(jù)108
414 讀取HTML表格數(shù)據(jù)109
415 讀取復(fù)雜格式數(shù)據(jù)文件112
416 讀取MySQL數(shù)據(jù)庫中的數(shù)據(jù)116
417 通過dbplyr訪問數(shù)據(jù)庫118
418 保存和傳送對象120
第5章 數(shù)據(jù)結(jié)構(gòu)123
51 對向量添加數(shù)據(jù)131
52 在向量中插入數(shù)據(jù)132
53 理解循環(huán)規(guī)則133
54 構(gòu)建因子134
55 將多個向量合并成單個向量以及一個平行因子136
56 創(chuàng)建列表137
57 根據(jù)位置選定列表元素139
58 根據(jù)名稱選定列表元素141
59 構(gòu)建一個名稱/值關(guān)聯(lián)表142
510 從列表中移除元素144
511 將列表轉(zhuǎn)換為向量145
512 從列表中移除空值元素146
513 使用條件來移除列表元素147
514 矩陣初始化149
515 執(zhí)行矩陣運算150
516 將描述性名稱賦給矩陣的行和列151
517 從矩陣中選定一行或一列152
518 用列數(shù)據(jù)初始化數(shù)據(jù)框153
519 用行數(shù)據(jù)初始化數(shù)據(jù)框155
520 對數(shù)據(jù)框添加行157
521 根據(jù)位置選擇數(shù)據(jù)框的列159
522 根據(jù)名稱選擇數(shù)據(jù)框的列163
523 修改數(shù)據(jù)框的列名165
524 從數(shù)據(jù)框中移除NA值166
525 根據(jù)名稱排除列167
526 合并兩個數(shù)據(jù)框168
527 根據(jù)共有列合并數(shù)據(jù)框169
528 基本數(shù)據(jù)類型之間的轉(zhuǎn)換171
529 從一種結(jié)構(gòu)化數(shù)據(jù)類型轉(zhuǎn)換到另一種數(shù)據(jù)類型172
第6章 數(shù)據(jù)轉(zhuǎn)換175
61 將函數(shù)應(yīng)用于列表的每個元素175
62 將函數(shù)應(yīng)用于數(shù)據(jù)框的每一行178
63 將函數(shù)應(yīng)用于矩陣的每一行179
64 將函數(shù)應(yīng)用于每一列180
65 將函數(shù)應(yīng)用于平行向量或列表182
66 將函數(shù)應(yīng)用于一組數(shù)據(jù)184
67 基于條件生成一個新列185
第7章 字符串和日期187
71 獲取字符串長度189
72 連接字符串190
73 提取子串191
74 根據(jù)分隔符分割字符串192
75 替代子串193
76 生成字符串的所有成對組合194
77 得到當(dāng)前日期196
78 轉(zhuǎn)換字符串為日期196
79 轉(zhuǎn)換日期為字符串197
710 轉(zhuǎn)換年、月、日為日期198
711 得到儒略日期200
712 提取日期的一部分200
713 創(chuàng)建日期序列202
第8章 概率204
81 計算組合數(shù)206
82 生成組合206
83 生成隨機數(shù)207
84 生成可再生的隨機數(shù)209
85 生成隨機樣本210
86 生成隨機序列212
87 隨機排列向量213
88 計算離散分布的概率213
89 計算連續(xù)分布的概率215
810 轉(zhuǎn)換概率為分位數(shù)216
811 繪制密度函數(shù)218
第9章 統(tǒng)計概論222
91 數(shù)據(jù)的匯總224
92 計算相對頻數(shù)226
93 因子數(shù)據(jù)的表格和列聯(lián)表創(chuàng)建227
94 檢驗分類變量獨立性228
95 計算數(shù)據(jù)集的百分位數(shù)(和四分位數(shù))229
96 求分位數(shù)的逆230
97 數(shù)據(jù)轉(zhuǎn)換為z分數(shù)231
98 檢驗樣本均值(t檢驗)232
99 均值的置信區(qū)間233
910 中位數(shù)的置信區(qū)間234
911 檢驗樣本比例235
912 比例的置信區(qū)間236
913 檢驗正態(tài)性237
914 游程檢驗239
915 比較兩個樣本的均值240
916 比較兩個非參數(shù)樣本的位置242
917 檢驗相關(guān)系數(shù)的顯著性243
918 檢驗組的等比例244
919 組均值間成對比較246
920 檢驗兩樣本的相同分布247
第10章 圖形249
101 創(chuàng)建散點圖252
102 添加標(biāo)題和標(biāo)簽254
103 添加(或去除)網(wǎng)格255
104 給ggplot圖形添加主題258
105 創(chuàng)建多組散點圖262
106 添加(或去除)圖例263
107 繪制散點圖