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