《圖靈程序設(shè)計(jì)叢書:學(xué)習(xí)R》分為上下兩部分,旨在指導(dǎo)你如何使用R,并提供練習(xí)的機(jī)會(huì)。上半部分主要介紹R的技術(shù)細(xì)節(jié)和使用技巧。每章都簡(jiǎn)要介紹了一組不同的數(shù)據(jù)類型(例如第4章介紹向量、矩陣和數(shù)組)或概念(例如第8章介紹分支和循環(huán))。下半部分更側(cè)重實(shí)踐,展示了從輸入數(shù)據(jù)到發(fā)布結(jié)果這一標(biāo)準(zhǔn)的數(shù)據(jù)分析流程。
即使你沒有任何編程基礎(chǔ),也能順利閱讀《學(xué)習(xí)R》。
《圖靈程序設(shè)計(jì)叢書:學(xué)習(xí)R》講解如何使用R語言及其軟件環(huán)境分析數(shù)據(jù),即使沒有編程經(jīng)驗(yàn)也能看懂。通過這本實(shí)用教程,你可以輕松掌握如何使用必要的R工具來分析數(shù)據(jù),同時(shí)掌握相關(guān)數(shù)據(jù)類型和通用的編程概念。
《圖靈程序設(shè)計(jì)叢書:學(xué)習(xí)R》后半部分會(huì)講到數(shù)據(jù)分析的各種實(shí)際應(yīng)用,涵蓋導(dǎo)入數(shù)據(jù)和發(fā)布結(jié)果。另外,值得一提的是,本書每一章都會(huì)結(jié)合所講內(nèi)容提供精心編制的小測(cè)試和練習(xí)題,需要編寫R代碼完成,從而鞏固所學(xué)的知識(shí)。
R 是一種編程語言,也是用于數(shù)據(jù)分析和統(tǒng)計(jì)的軟件環(huán)境。它是一個(gè)GNU 項(xiàng)目,這意味著它是自由的開源軟件。它正在以指數(shù)級(jí)的速度不斷成長——普遍認(rèn)為,它的用戶人數(shù)可能超過了100 萬,它有4000 多個(gè)由開發(fā)社區(qū)貢獻(xiàn)的附件包,而且每年以約25% 的速度增加。在本書創(chuàng)作之時(shí),它在Tiobe 編程社區(qū)指數(shù)(Tiobe Programming Community Index)的開發(fā)語言流行榜上已排至第24 位,大致與SAS 和MATLAB 看齊。
R 廣泛地應(yīng)用在每一個(gè)需要統(tǒng)計(jì)或數(shù)據(jù)分析的領(lǐng)域,涵蓋了金融、市場(chǎng)營銷、醫(yī)藥、基因組學(xué)、流行病學(xué)、社會(huì)科學(xué)、教學(xué)以及許多其他較小的領(lǐng)域。
關(guān)于本書
因?yàn)镽 主要用于統(tǒng)計(jì)分析,所以很多關(guān)于R 的書都在指導(dǎo)你如何計(jì)算統(tǒng)計(jì)或模型數(shù)據(jù)集。然而,這些書忽視了數(shù)據(jù)分析應(yīng)用的實(shí)際情況。事實(shí)上,除非你做的是尖端研究,否則你所用到的統(tǒng)計(jì)技術(shù)往往只需用于常規(guī)任務(wù),而且你的模型可能也不大。完整的數(shù)據(jù)分析流程更像是這樣:
。1) 取得一些數(shù)據(jù);
。2) 清理數(shù)據(jù);
。3) 探索和可視化數(shù)據(jù);
(4) 數(shù)據(jù)建模并做出預(yù)測(cè);
。5) 展示或發(fā)布你的結(jié)果。
當(dāng)然,每個(gè)階段都可能碰到一些有趣的問題,以至于你需要更多的數(shù)據(jù),或者要以不同的方式處理現(xiàn)有數(shù)據(jù),這會(huì)使你的工作倒退一步。工作流是可以迭代的,但每個(gè)步驟都不可或缺。
本書的第一部分會(huì)從頭開始教你R——你不需要任何編程語言的經(jīng)驗(yàn)。實(shí)際上,雖然完全沒有編程經(jīng)驗(yàn)也無妨,但有一些基本的編程知識(shí)會(huì)更好。例如,本書介紹了如何注釋代碼以及編寫for 循環(huán),但沒有作更詳細(xì)的解釋。因此,如果你想要找本真正的編程入門課本,那么Jason R。 Briggs 寫的Python for Kids 非常合適!
本書的第二部分將展示R 語言的完整數(shù)據(jù)分析流程,這里需要一些基本的統(tǒng)計(jì)知識(shí)。例如,你應(yīng)該了解平均值和標(biāo)準(zhǔn)差等術(shù)語,以及什么是條形圖(bar chart)。
本書最后將介紹R 的一些高級(jí)主題,例如面向?qū)ο缶幊毯桶膭?chuàng)建。Garrett Grolem 的Data Analysis with R 將會(huì)在本書的基礎(chǔ)上深入探討數(shù)據(jù)分析流程。
Richard Cotton,是一位通曉化學(xué)安全及健康的數(shù)據(jù)科學(xué)家,開發(fā)過很多能讓非專業(yè)用戶訪問統(tǒng)計(jì)模型的工具。他開發(fā)了很多R包,如assertive(用于檢查變量的狀態(tài))和sig(用于確保功能具有合理的API)。他也是The Damned Liars公司的統(tǒng)計(jì)學(xué)顧問。
譯者序 XII
前言 XIII
第一部分 R語言
第1章 簡(jiǎn)介 2
1.1 本章目標(biāo) 2
1.2 R是什么 2
1.3 安裝R 3
1.4 選擇一個(gè)IDE 4
1.4.1 Emacs+ESS 4
1.4.2 Eclipse/Architect 4
1.4.3 RStudio 5
1.4.4 Revolution-R 5
1.4.5 Live-R 5
1.4.6 其他IDE和編輯器 6
1.5 你的第一個(gè)程序 6
1.6 如何從R中獲得幫助 7
1.7 安裝其他相關(guān)軟件 9
1.8 小結(jié) 9
1.9 知識(shí)測(cè)試:?jiǎn)栴} 10
1.10 知識(shí)測(cè)試:練習(xí) 10
第2章 科學(xué)計(jì)算器 11
2.1 本章目標(biāo) 11
2.2 數(shù)學(xué)運(yùn)算符和向量 11
2.3 變量賦值 15
2.4 特殊數(shù)字 17
2.5 邏輯向量 18
2.6 小結(jié) 20
2.7 知識(shí)測(cè)試:?jiǎn)栴} 20
2.8 知識(shí)測(cè)試:練習(xí) 20
第3章 檢查變量和工作區(qū) 22
3.1 本章目標(biāo) 22
3.2 類 22
3.3 不同類型的數(shù)字 23
3.4 其他通用類 24
3.5 檢查和更改類 26
3.6 檢查變量 29
3.7 工作區(qū) 32
3.8 小結(jié) 33
3.9 知識(shí)測(cè)試:?jiǎn)栴} 33
3.10 知識(shí)測(cè)試:練習(xí) 34
第4章 向量、矩陣和數(shù)組 35
4.1 本章目標(biāo) 35
4.2 向量 35
4.2.1 序列 37
4.2.2 長度 38
4.2.3 命名 39
4.2.4 索引向量 39
4.2.5 向量循環(huán)和重復(fù) 41
4.3 矩陣和數(shù)組 43
4.3.1 創(chuàng)建數(shù)組和矩陣 43
4.3.2 行、列和維度 45
4.3.3 行名、列名和維度名 46
4.3.4 索引數(shù)組 47
4.3.5 合并矩陣 47
4.3.6 數(shù)組算術(shù) 48
4.4 小結(jié) 50
4.5 知識(shí)測(cè)試:?jiǎn)栴} 50
4.6 知識(shí)測(cè)試:練習(xí) 51
第5章 列表和數(shù)據(jù)框 52
5.1 本章目標(biāo) 52
5.2 列表 52
5.2.1 創(chuàng)建列表 52
5.2.2 原子變量和遞歸變量 54
5.2.3 列表的維度和算術(shù)運(yùn)算 55
5.2.4 索引列表 56
5.2.5 向量和列表之間的轉(zhuǎn)換 58
5.2.6 組合列表 60
5.3 NULL 61
5.4 成對(duì)列表 64
5.5 數(shù)據(jù)框 65
5.5.1 創(chuàng)建數(shù)據(jù)框 65
5.5.2 索引數(shù)據(jù)框 68
5.5.3 基本數(shù)據(jù)框操作 69
5.6 小結(jié) 71
5.7 知識(shí)測(cè)試:?jiǎn)栴} 71
5.8 知識(shí)測(cè)試:練習(xí) 72
第6章 環(huán)境和函數(shù) 73
6.1 本章目標(biāo) 73
6.2 環(huán)境 73
6.3 函數(shù) 76
6.3.1 創(chuàng)建和調(diào)用函數(shù) 76
6.3.2 向其他函數(shù)傳遞和接收函數(shù) 80
6.3.3 變量的作用域 82
6.4 小結(jié) 84
6.5 知識(shí)測(cè)試:?jiǎn)栴} 84
6.6 知識(shí)測(cè)試:練習(xí) 84
第7章 字符串和因子 86
7.1 本章目標(biāo) 86
7.2 字符串 86
7.2.1 創(chuàng)建和打印字符串 87
7.2.2 格式化數(shù)字 88
7.2.3 特殊字符 90
7.2.4 更改大小寫 91
7.2.5 截取字符串 91
7.2.6 分割字符串 92
7.2.7 文件路徑 93
7.3 因子 94
7.3.1 創(chuàng)建因子 94
7.3.2 更改因子水平 96
7.3.3 去掉因子水平 96
7.3.4 有序因子 97
7.3.5 將連續(xù)變量轉(zhuǎn)換為類別 98
7.3.6 將類別變量轉(zhuǎn)換為連續(xù)變量 99
7.3.7 生成因子水平 100
7.3.8 合并因子 100
7.4 小結(jié) 101
7.5 知識(shí)測(cè)試:?jiǎn)栴} 101
7.6 知識(shí)測(cè)試:練習(xí) 101
第8章 流程控制和循環(huán) 103
8.1 本章目標(biāo) 103
8.2 流程控制 103
8.2.1 if和else 103
8.2.2 矢量化的if 105
8.2.3 多個(gè)分支 106
8.3 循環(huán) 108
8.3.1 重復(fù)循環(huán) 108
8.3.2 while循環(huán) 110
8.3.3 for循環(huán) 111
8.4 小結(jié) 113
8.5 知識(shí)測(cè)試:?jiǎn)栴} 113
8.6 知識(shí)測(cè)試:練習(xí) 113
第9章 高級(jí)循環(huán) 115
9.1 本章目標(biāo) 115
9.2 replication 115
9.3 遍歷列表 116
9.4 遍歷數(shù)組 122
9.5 多個(gè)輸入的應(yīng)用函數(shù) 124
9.6 拆分-應(yīng)用-合并(Split-Apply-Combine) 126
9.7 plyr包 127
9.8 小結(jié) 130
9.9 知識(shí)測(cè)驗(yàn):?jiǎn)栴} 130
9.10 知識(shí)測(cè)試:練習(xí) 131
第10章 包 133
10.1 本章目標(biāo) 133
10.2 加載包 133
10.2.1 搜索路徑 135
10.2.2 庫和已安裝的包 136
10.3 安裝包 137
10.4 維護(hù)包 139
10.5 小結(jié) 139
10.6 知識(shí)測(cè)試:?jiǎn)栴} 140
10.7 知識(shí)測(cè)試:練習(xí) 140
第11章 日期和時(shí)間 141
11.1 本章目標(biāo) 141
11.2 日期和時(shí)間類 141
11.2.1 POSIX日期和時(shí)間 142
11.2.2 Date類 143
11.2.3 其他日期類 144
11.3 日期與字符串的相互轉(zhuǎn)換 144
11.3.1 解析日期 144
11.3.2 格式化日期 145
11.4 時(shí)區(qū) 145
11.5 日期和時(shí)間的算術(shù)運(yùn)算 147
11.6 lubridate 149
11.7 小結(jié) 153
11.8 知識(shí)測(cè)試:?jiǎn)栴} 153
11.9 知識(shí)測(cè)試:練習(xí) 153
第二部分 數(shù)據(jù)分析工作流
第12章 獲取數(shù)據(jù) 156
12.1 本章目標(biāo) 156
12.2 內(nèi)置的數(shù)據(jù)集 156
12.3 讀取文本文件 157
12.3.1 CSV和制表符分隔(Tab-Delimited)文件 157
12.3.2 非結(jié)構(gòu)化文本文件 161
12.3.3 XML和HTML文件 161
12.3.4 JSON和YAML文件 163
12.4 讀取二進(jìn)制文件 165
12.4.1 讀取Excel文件 165
12.4.2 讀取SAS、Stata、SPSS和MATLAB文件 167
12.4.3 讀取其他文件類型 167
12.5 Web數(shù)據(jù) 168
12.5.1 擁有API的網(wǎng)站 168
12.5.2 抓取網(wǎng)頁 169
12.6 訪問數(shù)據(jù)庫 171
12.7 小結(jié) 174
12.8 知識(shí)測(cè)試:?jiǎn)栴} 174
12.9 知識(shí)測(cè)試:練習(xí) 174
第13章 數(shù)據(jù)清理和轉(zhuǎn)換 175
13.1 本章目標(biāo) 175
13.2 清理字符串 175
13.3 操作數(shù)據(jù)框 180
13.3.1 添加和替換列 180
13.3.2 處理缺失值 181
13.3.3 在寬和長表格之間進(jìn)行轉(zhuǎn)換 182
13.3.4 使用SQL 183
13.4 排序 184
13.5 函數(shù)式編程 185
13.6 小結(jié) 188
13.7 知識(shí)測(cè)試:?jiǎn)栴} 188
13.8 知識(shí)測(cè)試:練習(xí) 189
第14章 探索和可視化 190
14.1 本章目標(biāo) 190
14.2 匯總統(tǒng)計(jì) 190
14.3 三種繪圖系統(tǒng) 194
14.4 散點(diǎn)圖 195
14.4.1 第一種方法:base繪圖法 195
14.4.2 第二種方法:lattice圖形系統(tǒng) 200
14.4.3 第三種方法:ggplot2圖形系統(tǒng) 207
14.5 線圖 212
14.6 直方圖 220
14.7 箱線圖 232
14.8 條形圖 236
14.9 其他的繪圖包和系統(tǒng) 242
14.10 小結(jié) 243
14.11 知識(shí)測(cè)試:?jiǎn)栴} 243
14.12 知識(shí)測(cè)試:練習(xí) 244
第15章 分布與建模 245
15.1 本章目標(biāo) 245
15.2 隨機(jī)數(shù) 246
15.2.1 示例函數(shù) 246
15.2.2 從分布中抽樣 247
15.3 分布 248
15.4 公式 248
15.5 第一個(gè)模型:線性回歸 250
15.5.1 比較和更新模型 252
15.5.2 繪圖和模型檢查 257
15.6 其他模型類型 261
15.7 小結(jié) 262
15.8 知識(shí)測(cè)試:?jiǎn)栴} 263
15.9 知識(shí)測(cè)試:練習(xí) 263
第16章 程序設(shè)計(jì) 264
16.1 本章目標(biāo) 264
16.2 信息、警告和錯(cuò)誤 264
16.3 錯(cuò)誤處理 267
16.4 調(diào)試 270
16.5 測(cè)試 273
16.5.1 RUnit 273
16.5.2 testthat 276
16.6 魔法 277
16.6.1 將字符串轉(zhuǎn)換成代碼 277
16.6.2 把代碼轉(zhuǎn)換成字符串 279
16.7 面向?qū)ο缶幊獭?80
16.7.1 S3類 281
16.7.2 引用類 282
16.8 小結(jié) 287
16.9 知識(shí)測(cè)試:?jiǎn)栴} 287
16.10 知識(shí)測(cè)試:練習(xí) 288
第17章 制作程序包 289
17.1 本章目標(biāo) 289
17.2 為什么要?jiǎng)?chuàng)建軟件包 289
17.3 先決條件 289
17.4 包目錄結(jié)構(gòu) 290
17.5 你的第一個(gè)包 291
17.6 為包撰寫文檔 293
17.7 檢查和構(gòu)建包 296
17.8 包的維護(hù) 297
17.9 小結(jié) 298
17.10 知識(shí)測(cè)試:?jiǎn)栴} 299
17.11 知識(shí)測(cè)試:練習(xí) 299
第三部分 附錄
附錄A 變量的屬性 302
附錄B R中其他可做的事情 305
附錄C 問題答案 307
附錄D 練習(xí)答案 315
參考文獻(xiàn) 339
關(guān)于封面 341