第 1 章 数据科学与R语言

1.1 数据科学

1.2 R语言基础

R 软件是一个自由、开源软件平台,具有统计分析、可视化和编程的强大功能。 你可以从这里免费下载。 为了更好的使用 R 软件,我推荐大家使用 RStudio这个 IDE。这里有个在线教程帮助我们熟悉 R 和 RStudio。 R 与 RStudio 是什么关系呢?你可以简单的理解为,RStudio 是话筒,而 R 则是沟通所用的语言。

RStudio用户界面

图 1.1: RStudio用户界面

RStudio 的用户界面十分简洁,想要运行一段R代码,只需要在 RStudio 控制台面板最下面一行内键入R 代码,然后回车即可。比如我们键入1 + 1 并按回车后,RStudio 将显示如下结果

1 + 1
## [1] 2

在R中存储的数据称为对象, R语言数据处理实际上就是不断的创建和操控这些对象。创建一个R对象,首先确定一个名称,然后使用 赋值操作符 <-,将数据赋值给它。比如,如果想给变量 x 赋值为5,在命令行中可以这样写 x <- 5 ,然后回车.

x <- 5

当键入x 然后回车,就打印出 x 的值。当然也可以使用命令print(x),结果一样。

x
## [1] 5

R 语言的强大在于使用函数操控各种对象,你可以把对象看作是名词,而函数看作是动词。 我们用一个简单的例子,sum()来演示函数如何工作的。这个函数的功能正如它的名字一样,对输入的各个对象求和,然后返回求和后的值,你可以在命令行中键入?sum()查看其官方文档。 sum()后的结果可以直接显示出来,也可以赋名。比如下面代码,首先计算x + 10并赋以名字y, 然后第二行中打印出来这个新创建的对象y

y <- sum(x, 10)
y
## [1] 15

因为代码的灵活性,可以不断地重新定义对象。只要数据发生改变,原来的代码就会返回新的值。比如,对x重新赋值为 15, 同样运行sum()函数,这次我们不赋值给对象y,而是让它直接显示

x <- 15
sum(x, 10)
## [1] 25

如果我们已经写好了一段R程序,我们可以保存为脚本文件,脚本文件通常以.R作为文件的后缀名。比如我们可以将刚才创建xy对象的命令,保存为脚本文件my_script.R。 这样我们可以在其它时间修改和重新运行它。

在RStudio中,你可以通过菜单栏依此点击File > New File > R Script 来创建一个新的脚本。 强烈建议大家在运行代码之前,使用脚本的形式编写和编辑自己的程序,养成这样的习惯后,你今后所有的工作都有案可查,并且具有可重复性。

1.3 R 宏包: The tidyverse

R 语言的强大还在于各种宏包,一般在The Comprehensive R Archive Network (CRAN)下载安装。宏包扩展了R语言本身的各种功能,也为解决问题提供了各种方案。截至撰写本书时止,CRAN上大约有1.2万个宏包可以使用。但由于各种包接口不统一,语法不一致,也带来一些困扰。为了解决这个问题,RStudio 公司的Hadley Wickham 与其带领的团队推出了tidyverse宏包, tidyverse将常用的宏包整合在一起,并保持了语法的一致性。可以说,tidyverse宏包是R语言入门 学习的首选。

本书正是基于tidyverse宏包而成的,本书也将通过一些例子不断地展示tidyverse在数据分析和可视化的应用。 数据分析主要使用dplyr package ,而可视化主要使用 ggplot2dplyr的函数主要有filter(), select(), arrange(), mutate(), group_by(), 以及 summarise()。 它们都具体相似的语法结构,将数据框(data frame)作为第一个参数,随后的参数才是需要执行操作的列名。这些函数均返回一个新的数据框,这也让 dplyr的各种函数借助管道操作符%>%,能够串联起来,像流水线一样对数据框执行若干操作,从而得到想要的结果。

如果说dplyr定义数据操作的语法,那么ggplot2 定义了图形语法。ggplot2的图形语法可以通过很短的R代码绘制出漂亮的图形,这主要得益于ggplot2 两个主要的部件:几何对象美学映射。所谓几何对象 就是使用什么样的可视化元素图形,是点?是线?还是矩阵?美学映射就是指数据框中的哪一列用来设置图形元素的大小、形状以及颜色等。

1.4 字符串处理:正则表达式

1.5 数据科学工作流程

数据科学工作流程

本书用到的R语言库包

my_packages <- c("ggplot2", "dplyr", "tidyr", "stringr", "widyr", "ggRadar",
                 "ggiraph", "ggiraphExtra", "ggraph", "tidygraph", "googlevis", 
                 "broom", "modelr", "knitr", "rlang", "tidytext", "wordcloud2", 
                 "tibbletime", "corrr", "devtools")

#install.packages(my_packages, repos = "http://cran.rstudio.com")

1.6 推荐书目

这不是一本讲R语言的书,如果您对R语言感兴趣,隆重向您推荐Hadley Wickham的《R for Data Science》这本书 (Grolemund and Wickham 2017)

您也可以抽空参加我的一小时系列讲座,课表时间在附录 A

参考文献

Grolemund, Garrett, and Hadley Wickham. 2017. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. 1 edition. Houston: O’Reilly Media. http://r4ds.had.co.nz/.