R社区领军人物作品,从典型数据科学项目所需工具模型着手,带领读者掌握R语言精华,学会熟练使用多种工具解决各种数据科学难题。
·探索——以可视化作为R编程起点,再进行重要变量选取、筛选关键观测等重要数据操作,并对数据提出问题且找到答案。
·处理——导入、整理并转换数据。
·编程——管道操作的工作原理和替代方式,函数使用规则,如何实现迭代。
·模型——深刻理解模型背后的数学理论和数据,直观认识统计模型工作原理。
·沟通——学会R Markdown,让人们快速轻松理解你的工作。
本书的目标是教会读者使用重要的数据科学工具,从而为实施数据科学奠定坚实的基础。 读完本书后,你将掌握R语言的精华,并能够熟练使用多种工具来解决各种数据科学难题。每一章都按照这样的顺序组织内容:先给出一些引人入胜的示例,以便你可以整体了解这一章的内容,然后再深入细节。本书的每一节都配有习题,以帮助你实践所学到的知识。
本书适合R数据科学家阅读
“Hadley Wickham是数据科学领域内的传奇人物,发明了一套全新的数据分析方法。他与Garrett Grolemund合著的这本书详细阐明了这种新方法,被数据分析者奉为圣经。”
——Roger D. Peng,约翰霍普金斯大学教授
“建议初次接触R的人都看看这本书中的R代码。作者详细说明了在R中处理数据的基本原则。”
——J.J.Allaire,RStudio创始人、CEO
前言XV
第一部分探索
第1章使用ggplot2进行数据可视化3
1.1简介3
1.2第一步4
1.2.1mpg数据框4
1.2.2创建ggplot图形5
1.2.3绘图模板5
1.2.4练习6
1.3图形属性映射6
1.4常见问题10
1.5分面11
1.6几何对象13
1.7统计变换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.2nycflights1333
3.1.3dplyr基础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常用创建函数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.2RStudio自动诊断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分类变量与连续变量72
5.5.2两个分类变量77
5.5.3两个连续变量79
5.6模式和模型82
5.7ggplot2调用84
5.8更多学习资源85
第6章工作流:项目86
6.1什么是真实的86
6.2你的分析位于哪里87
6.3路径与目录88
6.4RStudio项目88
6.5小结90
第二部分数据处理
第7章使用tibble实现简单数据框93
7.1简介93
7.2创建tibble93
7.3对比tibble与data.frame95
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.2nycflights13115
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其他实现方式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区域设置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.7stringi152
第11章使用forcats处理因子154
11.1简介154
11.2创建因子154
11.3综合社会调查156
11.4修改因子水平157
第12章使用lubridate处理日期和时间160
12.1简介160
12.2创建日期或时间161
12.2.1通过字符串创建161
12.2.2通过各个成分创建162
12.2.3通过其他类型数据创建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区间173
12.4.4小结173
12.4.5练习174
12.5时区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.4magrittr中的其他工具183
第14章函数185
14.1简介185
14.2什么时候应该使用函数186
14.3人与计算机的函数188
14.4条件执行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环境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标量与循环规则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.3tibble217
15.7.4练习218
第16章使用purrr实现迭代219
16.1简介219
16.2for循环220
16.3for循环的变体222
16.3.1修改现有对象222
16.3.2循环模式223
16.3.3未知的输出长度223
16.3.4未知的序列长度224
16.3.5练习225
16.4for循环与函数式编程226
16.5映射函数228
16.5.1快捷方式229
16.5.2R基础包230
16.5.3练习231
16.6对操作失败的处理231
16.7多参数映射233
16.8游走函数236
16.9for循环的其他模式237
16.9.1预测函数237
16.9.2归约与累计238
16.9.3练习239
第四部分模型
第17章使用modelr实现基础模型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交互项(连续变量与分类变量)256
17.4.3交互项(两个连续变量)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一周中的每一天274
18.3.2季节性星期六效应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创建列表列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章RMarkdown295
20.1简介295
20.2RMarkdown基础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内联代码303
20.4.7练习303
20.5排错304
20.6YAML文件头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章RMarkdown输出类型331
22.1简介331
22.2输出选项332
22.3文档332
22.4笔记本333
22.5演示文稿333
22.6仪表盘334
22.7交互元素335
22.7.1htmlwidgets335
22.7.2Shiny336
22.8网站337
22.9其他类型338
22.10更多学习资源338
第23章RMarkdown工作流339
作者简介341
封面简介341