本書以R語言為基礎(chǔ),介紹做任何分析都繞不開的數(shù)據(jù)處理基本操作。從基本包入手,循序漸進地引導(dǎo)讀者一步一步進行學(xué)習(xí)。首先介紹tidyverse生態(tài)系統(tǒng)的dplyr包,并在其后引入難度稍高但是性能更加優(yōu)秀的data.table包,然后介紹支持分布式數(shù)據(jù)處理的sparklyr包。在本書的zui后部分還提供了實戰(zhàn)的案例,并介紹了一些非常實用的數(shù)據(jù)處理技巧。
本書分為四個部分:di yi部分介紹基本的概念,介紹數(shù)據(jù)處理的基本概念和R語言編程基礎(chǔ),讓零基礎(chǔ)的讀者也能迅速入門;第二部分是快速入門部分,介紹如何使用base-r基本包和tidyverse生態(tài)系統(tǒng)來解決基本的數(shù)據(jù)處理問題,讓讀者能夠快速上手;第三部分是高級進階內(nèi)容,對于追求數(shù)據(jù)處理的速度和規(guī)模的用戶而言,需要進階學(xué)習(xí)data.table和sparklyr兩個R包,從而獲得更高的效率;第四部分是實戰(zhàn)案例,利用航班數(shù)據(jù)進行演練,并對前面所學(xué)的技巧進行測試,而且分享了在R中進行數(shù)據(jù)處理的實用技巧。
本書不僅是需要用R語言進行數(shù)據(jù)分析的讀者快速入門的教程,而且是數(shù)據(jù)分析人員常備的案頭參考工具書,具備強大的索引查詢功能。
黃天元,復(fù)旦大學(xué)博士生,研究方向為生態(tài)信息科學(xué)與數(shù)據(jù)科學(xué)。精通R語言及其在數(shù)據(jù)處理中的高效運用,已發(fā)表學(xué)術(shù)論文兩篇,知乎專欄“R語言數(shù)據(jù)挖掘”作者。
第1 部分 基礎(chǔ)知識...................1
第1 章 數(shù)據(jù)處理總論.......................... 2
1.1 數(shù)據(jù)處理的定義 ....................2
1.2 數(shù)據(jù)處理的意義 ...................3
1.3 數(shù)據(jù)處理基本工具 ..................3
第2 章 R 語言編程基礎(chǔ).................. 6
2.1 下載安裝 ...................6
2.2 包的使用 ..................7
2.3 數(shù)據(jù)類型 .........................8
2.4 數(shù)據(jù)結(jié)構(gòu) ........................10
2.5 程序控制 ........................15
2.6 函數(shù)式編程 ....................17
第3 章 數(shù)據(jù)處理基本范式....................... 19
第2 部分 快速入門...................24
第4 章 base-r:基本數(shù)據(jù)處理................. 25
4.1 數(shù)據(jù)集及其基本探索 .....................25
4.2 基本范式實現(xiàn) ................27
4.2.1 創(chuàng)建(read.csv/data.frame) ................................27
4.2.2 刪除(rm) .........................28
4.2.3 檢索(DF[i,j]) ...................28
4.2.4 插入(rbind/cbind) ........................31
4.2.5 排序(order) .....................33
4.2.6 過濾(DF[condition,]) ...................35
4.2.7 匯總(apply) .....................36
4.2.8 分組(aggregate) ...........................36
4.2.9 連接(merge) ....................37
第5 章 tidyverse 生態(tài)系統(tǒng):簡潔高效數(shù)據(jù)處理.................... 40
5.1 tidyverse 生態(tài)系統(tǒng)簡介 ........................40
5.2 基本范式實現(xiàn) ............................41
5.2.1 包的加載(p_load) ........................41
5.2.2 創(chuàng)建(read_csv/tibble) ..................42
5.2.3 刪除(rm) .........................45
5.2.4 檢索(select/slice) .........................46
5.2.5 插入(add/bind) ................50
5.2.6 排序(arrange) ..................54
5.2.7 過濾(filter) ......................56
5.2.8 匯總(summarise) .........................59
5.2.9 分組(group_by) ...........................61
5.2.10 連接(join) .....................63
5.3 高級處理工具 ................67
5.3.1 長寬數(shù)據(jù)變換(gather/spread) ..........................68
5.3.2 集合運算(intersect/union/setdiff) .....................70
5.3.3 窗口函數(shù)(rank/lead/lag/cum) ...........................74
5.3.4 連接數(shù)據(jù)庫:對SQL 的支持(dbplyr) .........................81
5.3.5 巧妙寫函數(shù):變量的引用 ...............85
第3 部分 高級進階...................93
第6 章 data.table:高速數(shù)據(jù)處理............... 94
6.1 data.table 簡介 ...............94
6.2 基本范式實現(xiàn) ................96
6.3 高級特性探索 ............................... 116
第7 章 sparklyr: 分布式數(shù)據(jù)處理.................................. 128
7.1 連接R 與Spark:sparklyr 包簡介 ...............................128
7.2 基本操作指南 ...............................130
7.3 存儲機制簡介 ...............................135
7.4 分布式計算 ..................136
第4 部分 實戰(zhàn)應(yīng)用................. 139
第8 章 航班飛行數(shù)據(jù)演練..................... 140
8.1 nycflights13 數(shù)據(jù)集探索 ...........................140
8.2 flights14 數(shù)據(jù)集探索 ....................148
第9 章 測試..................... 155
第10 章 實用數(shù)據(jù)處理技巧..................... 157
10.1 數(shù)據(jù)存取 ....................157
10.1.1 令人頭疼的編碼格式(encoding) ..............................157
10.1.2 讀寫性能競速賽(fst/feather & data.table/readr) ....................158
10.1.3 數(shù)據(jù)存取轉(zhuǎn)換的瑞士軍刀(rio) ...................162
10.2 并行計算(doParallel) .........................164
10.3 混合編程 ....................168
第11 章 實戰(zhàn)案例:網(wǎng)絡(luò)爬蟲與文本挖掘............................. 173
11.1 網(wǎng)絡(luò)爬。╮vest) .....................174
11.2 文本挖掘(tidytext).................177
第12 章 實戰(zhàn)案例:數(shù)據(jù)塑型與可視化(ggplot2).....................180
12.1 數(shù)據(jù)準(zhǔn)備 ....................181
12.2 柱狀圖(geom_bar) .................182
12.3 折線圖(geom_line) ................183
12.4 餅圖(ggpie) ............................184
12.5 一行代碼實現(xiàn)一頁多圖(gridExtra) .......................186
第13 章 實戰(zhàn)案例:機器學(xué)習(xí).................. 193
13.1 機器學(xué)習(xí)概述 .............................193
13.2 為什么要做機器學(xué)習(xí) .................193
13.3 如何入門機器學(xué)習(xí) .....................194
13.4 數(shù)據(jù)處理與機器學(xué)習(xí) .................195
13.5 案例分析:信貸風(fēng)險預(yù)測模型構(gòu)建 ...........................195
致謝..............................204