R语言编程:基于tidyverse
上QQ阅读APP看书,第一时间看更新

0.2 R语言与数据科学

0.2.1 什么是数据科学

数据科学是综合了统计学、计算机科学和领域知识的交叉学科,其基本内容就是用数据的方法研究科学,用科学的方法研究数据。数据科学与当前热门的人工智能、数据挖掘、机器学习、深度学习、大数据之间的关系,如图0.3所示。

图0.3 数据科学的位置

Hadley Wickham定义了数据科学的工作流程,如图0.4所示,即数据导入、数据清洗、数据变换、数据可视化、数据建模以及文档沟通,整个分析和探索过程,我们应当训练这样的数据思维。

图0.4 数据科学的工作流程

0.2.2 什么是R语言

1992年,新西兰奥克兰大学统计学教授Ross Ihaka和Robert Gentleman,为了便于给学生教授统计学课程,设计并开发了R语言(他们名字的首字母都是R)。

R语言发展过程中的重要事件:

2000年,R 1.0.0发布;

2005年,ggplot2包(2018.8—2019.8下载量超过1.3亿次);

2016年,Rstudio公司推出tidyverse包(数据科学当前最新R包);

2022年,R 4.1.2发布,目前CRAN上的R包数量为18985,近两年增速明显加快。

TIOBE是世界级的编程语言排行榜,能够反映编程语言的火热程度。这几年Python排名一路飙升,甚至冲到了第一。R语言属于统计分析语言,近年一直在10至20名之间徘徊,曾经短暂地冲到过第8名(2020年8月)。2022年12月,排名第11位,如图0.5所示。

图0.5 TIOBE最新编程语言排名

IEEE Spectrum发布的2021年度编程语言排行榜,从涵盖社交网站、开源代码网站和求职网站的8个信息源:CareerBuilder、GitHub、Google、Hacker News、IEEE、Reddit、Stack Overflow和Twitter,按照11个指标收集数据,最终得到了数十种编程语言流行度的整体排名,如图0.6所示。

图0.6 IEEE Spectrum 2021年度编程语言排行榜

2019年权威机构KDnuggets做过调研,调研结果显示数据科学领域最受欢迎的编程语言包括Python和R:

Python更全能,适合将来做程序员或在企业工作;

R语言更侧重数据统计分析,适合将来做科研学术。

R语言是用于统计分析、图形表示和报告的编程语言:

R语言是统计学家开发的,为统计计算、数据分析和可视化而设计;

R语言适合做数据处理和数据建模(数据预处理、数据探索性分析、识别数据隐含的模式、数据可视化)。

R语言的优势如下:

免费且开源,软件体量小,可以根据需要安装扩展包,兼容各种常见操作系统,有强大且活跃的社区;

专门为统计和数据分析开发的语言,有丰富的扩展包;

拥有顶尖水准的制图功能;

面向对象和函数,比Python简单易学。

在热门的机器学习领域,有足以媲美Python的sklearn机器学习库的R机器学习包mlr3versetidymodels(参见附录F)。

0.2.3 改变了R的人

Hadley Wickham博士是为统计应用领域做出过突出贡献的统计学家,被称为改变了R的人,图0.7所示的是著名的R语言专家—Hadley Wickham。

图0.7 R语言专家—Hadley Wickham

2019年,在国际统计学年会上,Hadley被授予COPSS奖,该奖项是国际统计学领域的最高奖项,被誉为“统计学界的诺贝尔奖”。他现在是Rstudio首席科学家,同时也是奥克兰大学、斯坦福大学和赖斯大学的统计系兼职教授。为了使数据科学更简洁、高效、有趣,他编写了大量知名的R包,主要包括下面这些。

数据科学相关的包tidyverse

ggplot2用于数据可视化。

dplyr用于数据操作。

tidyr用于数据清洗。

stringr用于处理字符串。

lubridate用于处理日期时间。

数据导入相关的包

readr用于读入.csv/fwf文件。

readxl用于读入.xls/.xlsx文件。

haven用于读入SAS/SPSS/Stata文件。

httr用于与Web交互的APIs。

rvest用于网页爬虫。

xml2用于读入XML文件。

R开发工具

devtools用于开发R包。

roxygen2用于生成内联(in-line)文档。

testthat用于单元测试。

pkgdown用于创建美观的包网页。

Hadley还出版过一系列图书,包括:

《R数据科学》(R for Data Science)介绍用R做数据科学的关键工具。

《ggplot2:数据分析与图形艺术》(ggplot2: Elegant Graphics for Data Analysis)展示如何使用ggplot2创建有助于理解数据的图形。

《高级R语言编程指南》(Advanced R)帮助你掌握R语言,以及使用R语言的深层技巧。

《R包开发》(R Packages)讲授良好的R软件项目实践,科学地创建R包:打包文件、生成文档、测试代码。