R数据科学实战:工具详解与案例分析
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

开始学习和使用R语言,初学者最开始往往会有各种困惑和纠结,可能会走过许多的弯路。和众多初学者一样,我们也深感R语言的学习道路荆棘满布。写这本书的初衷就是希望能够将我们的经历分享给大家,让学习R语言的道路变得略微平坦一些,降低初学者使用R语言的难度。

在我们一起学习交流R语言的过程中,发现最大的挑战是学习资料过剩却不精,另外,国内的技术社区关于R语言的问答内容相对较少。开源的R语言从来不缺免费的学习资料,这当然是好事一件。但凡事总有两面性,因为每个人学习R语言的目的和应用场景都略有不同,很多学习资料初看像是在介绍R语言不同方向的问题或者介绍一些新奇的R包和函数,但是我们经常发现自己其实是在花费大量的时间重复阅读相同的概念性问题。比如说使用R语言进行数据清理,不同的数据来源和不同的分析任务可能会让数据清理有上百种可行的方案。在耗费了很多时间尝试这些不同的方法而不得要领后,随之而来的挫败感往往让人心生怯意。所以,我们写下此书,系统性地讲解R语言流行最实用的不同数据运用主题的操作框架。写作的核心是希望让读者能够快速上手并实际运用。

R语言只是万千工具中的一种,熟练掌握工具的各种特性固然重要,但是更重要的是明确任务目标和处理问题的先后顺序。换句话说,使用R语言进行数据分析的首要任务,是明确自己的目标,然后围绕该目标建立起合理的流程图,其次才是寻找最合适的工具来帮助我们完成每一个具体的任务。所以,最后我们发现万变不离其宗的是清晰的数据分析逻辑。只有当有了自己的数据分析路线图之后,才不会被每天涌现的新的学习资料所淹没,而是能够高效地搜索和应用这些新内容。这也是本书希望传递给读者的信息,R语言则是传递信息的一种媒介。就如在军事战争当中,你有了高级武器,并不一定确保你可以打败敌人,只有对这些武器有了系统性的认识后,才代表你真正拥有了这些武器。本书就是R语言这件武器的速成手册,希望读者在系统性地认识R语言在数据科学领域中的效力后,降低其在生产环境中的实际运用难度。

读者对象

·R语言初学者,使用R语言进行数据处理的初中级用户

·各行各业的数据分析师、数据挖掘工程师

·R语言爱好者,使用R语言进行大数据处理的用户

·转型数据科学人员

·大中专院校学生

本书特色

本书按照数据分析的一般流程,介绍和讨论了在各个流程中所需的常见的R函数,并对其中相对重要的函数做了较为详尽的参数解释和代码演示。相较于大部分R语言学习资料中粗略概况性地告知读者不同场景可能用到的R函数,本书更侧重于帮助读者建立自己的数据分析逻辑结构以及由一系列常见R函数组成的“工具箱”。特别是tidyverse系列工具箱和data.table包,目前的中文博客社区里很少有资料对这两者进行较完整和系统的介绍。对于R语言初学者来说,tidyverse系列是学习使用R的最佳起点,而data.table包则对中高级用户大有助益。另外,本书对重要的“工具”函数,例如循环和迭代,做了较为详尽的解释和代码演示,来帮助读者理解其运行机制。最后,书中提供了5个实战案例,结合书中介绍的各种“工具”,强化使用R语言进行数据分析的路线图。

如何阅读本书

本书共11章,前6章主要介绍和讨论使用R语言的一般流程以及常用的R包;第7~11章,包含了5个实战案例,通过与前6章的内容相结合,展示如何使用这些R包。复现书中的代码需要读者对.Rproj有一定的了解,建议读者参阅网络教程学会使用.Rproj。使用.Rproj的原因在于其可以将每一次数据分析或练习都视为一个独立的项目(不必调用setwd函数重置工作路径),这样做不但可以减少代码出错的几率,而且还能更利于进行数据管理。

对于零基础的R语言初学者,建议按照章节顺序进行阅读,尤其是第1~3章,介绍了数据分析中相对重要的数据准备阶段。对于有一定基础的R语言用户,可以直接阅读自己感兴趣的部分。各章节的简要介绍如下所示。

第1章为数据读取,对比介绍不同格式数据读取所需的R包,着重介绍平面文档和Excel格式文件的读取。

第2章为数据清洗,主要介绍tibble(版本号:1.4.2)和tidyr(版本号:0.8.0)中常用的函数及其参数设置。

第3章为数据计算,主要介绍dplyr(版本号:0.7.4)中常用的函数及使用技巧。

第4章为R中的迭代循环,主要介绍基础for和while循环及apply家族函数的运行机制。

第5章主要介绍purrr包(版本号:0.2.4)的关键函数和运行机制。

第6章着重讲解data.table包(版本号:1.11.4)的使用技巧。

第7~11章为5个实战案例,在ggplot2(版本号:2.2.1)包的配合下,结合前6章中的常用函数完整地呈现了一般的数据分析流程和简单的探索性数据分析。5个案例具体如下:

·数据科学从业者调查数据集清洗及探索性分析。

·纽约共享单车数据集初级分析。

·星巴克店面数量数据集初级分析。

·学生成绩数据集初级分析。

·YouTube视频观看数据集处理及初级分析。

本书中的代码内容是在Rstudio内完成,的环境参数如下:

R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936LC_CTYPE=Chinese (Simplified)_China.936
LC_MONETARY=Chinese (Simplified)_China.936
[4] LC_NUMERIC=CLC_TIME=Chinese (Simplified)_China.936
attached base packages:
[1] stats graphicsgrDevices utils datasetsmethods base 

勘误和支持

由于作者的水平有限,写作时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持的GitHub站点,https://github.com/frank0434/Data-Science-in-Action-R-Tools-and-Case-Studies。我将尽力在线上为读者提供最满意的解答。书中的全部源文件都可以从上面的GitHub站点下载,我也会将相应的功能及时更新出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱gong0435@gmail.com,期待能够得到你们的真挚反馈。

致谢

刘健在此感谢我的同事及人生导师Linley Jesson。是她带我进入R语言的世界,并一直鼓励我不断尝试突破自我。是她的耐心指导,让我能够在短时间内熟练掌握R语言并应用到工作当中解决实际问题。感谢我的父母,将我培养成人。最后感谢我的女儿和妻子,是你们的理解和默默的付出让我能够占用陪伴你们的时间来完成大部分书稿。

邬书豪在此感谢我的大学老师徐磊教授7年来一直对我的鼓励支持和看好,谦谦君子,是您的引导和启迪让我敢于多多尝试,坚定自己的信念走上了数据科学这条路,您的人格魅力与意志信念给予我人生中巨大的精神力量,感谢您一直与我分享您的待人接物的理念,使我受益匪浅。感谢我的好朋友石楠女士,你对我在数据科学成长道路上的关心、引导,使我坚定地在数据科学道路上解决了安身立命之本,指导我以严谨认真的态度对待工作和生活。感谢我的父母对我的养育与坚定的支持,让我有机会在这个世界为自己的人生理想打拼,感谢我的领导给予我茁壮成长和贡献自己产出的机会,感谢我那么优秀的同事们,与你们一起共事让我成长良多。

感谢机械工业出版社华章公司的编辑杨福川和张锡鹏,在这一年多的时间中始终支持我们的写作,是你们的理解和支持帮助我们顺利完成全部书稿。

谨以此书献给和我们一样在数据科学领域摸索前行的伙伴,以及众多热爱R语言的朋友们!

刘健 邬书豪

2019年03月