本書的目標是教會讀者使用重要的數據科學工具,從而為實施數據科學奠定堅實的基礎。 讀完本書后,你將掌握R語言的精華,并能夠熟練使用多種工具來解決各種數據科學難題。每一章都按照這樣的順序組織內容:先給出一些引人入勝的示例,以便你可以整體了解這一章的內容,然后再深入細節(jié)。本書的每一節(jié)都配有習題,以幫助你實踐所學到的知識。
本書適合R數據科學家閱讀
R社區(qū)領軍人物作品,從典型數據科學項目所需工具模型著手,帶領讀者掌握R語言精華,學會熟練使用多種工具解決各種數據科學難題。
·探索以可視化作為R編程起點,再進行重要變量選取、篩選關鍵觀測等重要數據操作,并對數據提出問題且找到答案。
·處理導入、整理并轉換數據。
·編程管道操作的工作原理和替代方式,函數使用規(guī)則,如何實現(xiàn)迭代。
·模型深刻理解模型背后的數學理論和數據,直觀認識統(tǒng)計模型工作原理。
·溝通學會R Markdown,讓人們快速輕松理解你的工作。
哈德利·威克姆(Hadley Wickham), RStudioshou席科學家,統(tǒng)計學家,斯坦福大學、奧克蘭大學、萊斯大學兼職統(tǒng)計學教授。已被下載數百萬次的ggplot2等多款知名R包的開fa者,一直致力于讓普羅大眾更容易上手數據分析,被R社區(qū)譽為改變了R的人。另著有《R包開發(fā)》等書。
加勒特·格羅勒芒德(Garrett Grolemund),RStudio數據科學家,知名R培訓師,曾受邀在Google、eBay等諸多公司講授R語言和數據科學,在DataCamp開授的R相關課程備受R開fa者喜愛。另著有《R語言入門與實踐》。
譯者簡介
陳光欣,畢業(yè)于清華大學并留校工作,主要興趣為數據分析與數據挖掘。
前言 XV
第 一部分 探索
第 1 章 使用ggplot2進行數據可視化 3
1.1 簡介 3
1.2 第 一步 4
1.2.1 mpg數據框 4
1.2.2 創(chuàng)建ggplot圖形 5
1.2.3 繪圖模板 5
1.2.4 練習 6
1.3 圖形屬性映射 6
1.4 常見問題 10
1.5 分面 11
1.6 幾何對象 13
1.7 統(tǒng)計變換 18
1.8 位置調整 21
1.9 坐標系 25
1.10 圖形分層語法 27
第 2 章 工作流:基礎 29
2.1 代碼基礎 29
2.2 對象名稱 30
2.3 函數調用 30
第 3 章 使用dplyr進行數據轉換 33
3.1 簡介 33
3.1.1 準備工作 33
3.1.2 nycflights13 33
3.1.3 dplyr基礎 34
3.2 使用filter()篩選行 35
3.2.1 比較運算符 36
3.2.2 邏輯運算符 36
3.2.3 缺失值 37
3.2.4 練習 38
3.3 使用arrange()排列行 39
3.4 使用select()選擇列 40
3.5 使用mutate()添加新變量 42
3.5.1 常用創(chuàng)建函數 43
3.5.2 練習 45
3.6 使用summarize()進行分組摘要 46
3.6.1 使用管道組合多種操作 46
3.6.2 缺失值 48
3.6.3 計數 49
3.6.4 常用的摘要函數 52
3.6.5 按多個變量分組 56
3.6.6 取消分組 57
3.6.7 練習 57
3.7 分組新變量(和篩選器) 58
第 4 章 工作流:腳本 60
4.1 運行代碼 61
4.2 RStudio自動診斷 61
第 5 章 探索性數據分析 63
5.1 簡介 63
5.2 問題 64
5.3 變動 64
5.3.1 對分布進行可視化表示 65
5.3.2 典型值 67
5.3.3 異常值 69
5.3.4 練習 70
5.4 缺失值 71
5.5 相關變動 72
5.5.1 分類變量與連續(xù)變量 72
5.5.2 兩個分類變量 77
5.5.3 兩個連續(xù)變量 79
5.6 模式和模型 82
5.7 ggplot2調用 84
5.8 更多學習資源 85
第 6 章 工作流:項目 86
6.1 什么是真實的 86
6.2 你的分析位于哪里 87
6.3 路徑與目錄 88
6.4 RStudio項目 88
6.5 小結 90
D二部分 數據處理
第 7 章 使用tibble實現(xiàn)簡單數據框 93
7.1 簡介 93
7.2 創(chuàng)建tibble 93
7.3 對比tibble與data.frame 95
7.3.1 打印 95
7.3.2 取子集 96
7.4 與舊代碼進行交互 96
第 8 章 使用readr進行數據導入 98
8.1 簡介 98
8.2 入門 98
8.2.1 與R基礎包進行比較 100
8.2.2 練習 101
8.3 解析向量 101
8.3.1 數值 102
8.3.2 字符串 103
8.3.3 因子 105
8.3.4 日期、日期時間與時間 105
8.3.5 練習 107
8.4 解析文件 107
8.4.1 策略 107
8.4.2 問題 108
8.4.3 其他策略 110
8.5 寫入文件 112
8.6 其他類型的數據 113
第 9 章 使用dplyr處理關系數據 114
9.1 簡介 114
9.2 nycflights13 115
9.3 鍵 117
9.4 合并連接 119
9.4.1 理解連接 120
9.4.2 內連接 121
9.4.3 外連接 121
9.4.4 重復鍵 122
9.4.5 定義鍵列 124
9.4.6 練習 125
9.4.7 其他實現(xiàn)方式 126
9.5 篩選連接 127
9.6 連接中的問題 129
9.7 集合操作 130
第 10 章 使用stringr處理字符串 131
10.1 簡介 131
10.2 字符串基礎 131
10.2.1 字符串長度 132
10.2.2 字符串組合 133
10.2.3 字符串取子集 133
10.2.4 區(qū)域設置 134
10.2.5 練習 134
10.3 使用正則表達式進行模式匹配 135
10.3.1 基礎匹配 135
10.3.2 練習 136
10.3.3 錨點 136
10.3.4 練習 137
10.3.5 字符類與字符選項 137
10.3.6 練習 138
10.3.7 重復 138
10.3.8 練習 139
10.3.9 分組與回溯引用 140
10.3.10 練習 140
10.4 工具 140
10.4.1 匹配檢測 142
10.4.2 練習 143
10.4.3 提取匹配內容 144
10.4.4 練習 145
10.4.5 分組匹配 145
10.4.6 練習 147
10.4.7 替換匹配內容 147
10.4.8 練習 147
10.4.9 拆分 147
10.4.10 練習 149
10.4.11 定位匹配內容 149
10.5 其他類型的模式 149
10.6 正則表達式的其他應用 152
10.7 stringi 152
第 11 章 使用forcats處理因子 154
11.1 簡介 154
11.2 創(chuàng)建因子 154
11.3 綜合社會調查 156
11.4 修改因子水平 157
第 12 章 使用lubridate處理日期和時間 160
12.1 簡介 160
12.2 創(chuàng)建日期或時間 161
12.2.1 通過字符串創(chuàng)建 161
12.2.2 通過各個成分創(chuàng)建 162
12.2.3 通過其他類型數據創(chuàng)建 164
12.2.4 練習 165
12.3 日期時間成分 165
12.3.1 獲取成分 165
12.3.2 舍入 168
12.3.3 設置成分 168
12.3.4 練習 170
12.4 時間間隔 170
12.4.1 時期 170
12.4.2 階段 171
12.4.3 區(qū)間 173
12.4.4 小結 173
12.4.5 練習 174
12.5 時區(qū) 174
第三部分 編程
第 13 章 使用magrittr進行管道操作 179
13.1 簡介 179
13.2 管道的替代方式 179
13.2.1 中間步驟 180
13.2.2 重寫初始對象 181
13.2.3 函數組合 181
13.2.4 使用管道 182
13.3 不適合使用管道的情形 183
13.4 magrittr中的其他工具 183
第 14 章 函數 185
14.1 簡介 185
14.2 什么時候應該使用函數 186
14.3 人與計算機的函數 188
14.4 條件執(zhí)行 190
14.4.1 條件 191
14.4.2 多重條件 192
14.4.3 代碼風格 192
14.4.4 練習 193
14.5 函數參數 194
14.5.1 選擇參數名稱 195
14.5.2 檢查參數值 195
14.5.3 點點點(...) 197
14.5.4 惰性求值 197
14.5.5 練習 198
14.6 返回值 198
14.6.1 顯式返回語句 198
14.6.2 使得函數支持管道 199
14.7 環(huán)境 200
第 15 章 向量 201
15.1 簡介 201
15.2 向量基礎 202
15.3 重要的原子向量 203
15.3.1 邏輯型 203
15.3.2 數值型 203
15.3.3 字符型 204
15.3.4 缺失值 204
15.3.5 練習 204
15.4 使用原子向量 205
15.4.1 強制轉換 205
15.4.2 檢驗函數 206
15.4.3 標量與循環(huán)規(guī)則 206
15.4.4 向量命名 208
15.4.5 向量取子集 208
15.4.6 練習 209
15.5 遞歸向量(列表) 210
15.5.1 列表可視化 211
15.5.2 列表取子集 211
15.5.3 調料列表 212
15.5.4 練習 214
15.6 特性 214
15.7 擴展向量 216
15.7.1 因子 216
15.7.2 日期和日期時間 216
15.7.3 tibble 217
15.7.4 練習 218
第 16 章 使用purrr實現(xiàn)迭代 219
16.1 簡介 219
16.2 for循環(huán) 220
16.3 for循環(huán)的變體 222
16.3.1 修改現(xiàn)有對象 222
16.3.2 循環(huán)模式 223
16.3.3 未知的輸出長度 223
16.3.4 未知的序列長度 224
16.3.5 練習 225
16.4 for循環(huán)與函數式編程 226
16.5 映射函數 228
16.5.1 快捷方式 229
16.5.2 R基礎包 230
16.5.3 練習 231
16.6 對操作失敗的處理 231
16.7 多參數映射 233
16.8 游走函數 236
16.9 for循環(huán)的其他模式 237
16.9.1 預測函數 237
16.9.2 歸約與累計 238
16.9.3 練習 239
第四部分 模型
第 17 章 使用modelr實現(xiàn)基礎模型 243
17.1 簡介 243
17.2 一個簡單模型 244
17.3 模型可視化 250
17.3.1 預測 250
17.3.2 殘差 252
17.3.3 練習 253
17.4 公式和模型族 254
17.4.1 分類變量 255
17.4.2 交互項(連續(xù)變量與分類變量) 256
17.4.3 交互項(兩個連續(xù)變量) 259
17.4.4 變量轉換 261
17.4.5 練習 264
17.5 缺失值 264
17.6 其他模型族 265
第 18 章 模型構建 266
18.1 簡介 266
18.2 為什么質量差的鉆石更貴 267
18.2.1 價格與重量 268
18.2.2 一個更復雜的模型 271
18.2.3 練習 273
18.3 哪些因素影響了每日航班數量 273
18.3.1 一周中的每一tian 274
18.3.2 季節(jié)性星期六效應 277
18.3.3 計算出的變量 280
18.3.4 年度時間:另一種方法 281
18.3.5 練習 282
18.4 學習更多模型知識 282
第 19 章 使用purrr和broom處理多個模型 284
19.1 簡介 284
19.2 列表列 285
19.3 創(chuàng)建列表列 286
19.3.1 使用嵌套 286
19.3.2 使用向量化函數 287
19.3.3 使用多值摘要 288
19.3.4 使用命名列表 288
19.3.5 練習 289
19.4 簡化列表列 290
19.4.1 列表轉換為向量 290
19.4.2 嵌套還原 291
19.4.3 練習 292
19.5 使用broom生成整潔數據 292
第五部分 溝通
第 20 章 R Markdown 295
20.1 簡介 295
20.2 R Markdown基礎 295
20.3 使用Markdown格式化文本 298
20.4 代碼段 299
20.4.1 代碼段名稱 300
20.4.2 代碼段選項 300
20.4.3 表格 301
20.4.4 緩存 301
20.4.5 全局選項 302
20.4.6 內聯(lián)代碼 303
20.4.7 練習 303
20.5 排錯 304
20.6 YAML文件頭 304
20.6.1 文檔參數 304
20.6.2 參考文獻與引用 306
20.7 更多學習資源 307
第 21 章 使用ggplot2進行圖形化溝通 308
21.1 簡介 308
21.2 標簽 309
21.3 注釋 311
21.4 標度 316
21.4.1 坐標軸刻度與圖例項目 316
21.4.2 圖例布局 318
21.4.3 標度替換 320
21.4.4 練習 324
21.5 縮放 325
21.6 主題 326
21.7 保存圖形 328
21.7.1 圖形大小 328
21.7.2 其他重要選項 330
21.8 更多學習資源 330
第 22 章 R Markdown輸出類型 331
22.1 簡介 331
22.2 輸出選項 332
22.3 文檔 332
22.4 筆記本 333
22.5 演示文稿 333
22.6 儀表盤 334
22.7 交互元素 335
22.7.1 htmlwidgets 335
22.7.2 Shiny 336
22.8 網站 337
22.9 其他類型 338
22.10 更多學習資源 338
第 23 章 R Markdown工作流 339
作者簡介 341
封面簡介 341