4.2.2 dplyr包

4.2.2 dplyr包

dplyr包是R中功能非常强大的软件包,也是tidyverse包集合中的一个核心包。dplyr包通常用于数据探索性分析。加载dplyr包的方式和tidyr包相同。

注意,在加载时,dplyr包会覆盖R中的基础函数。如果想要在加载dplyr包后使用这些函数的基础版本,应该使用它们的完整名称:stats::filter()和stats::lag()。

为介绍tidyr包和dplyr包中函数的基本使用方法,本章引入了一个数据集——globalsuperstore。此数据集来源于一家跨国零售企业2011—2014年的零售订单数据,存储方式为Excel工作表。使用readxl包中的read_excel()函数导入数据,具体如下:

观察数据集global-superstore可知,这个数据框的输出和以前用过的其他数据框有一处不同,即只显示了前几行和适合屏幕宽度的几列。注意,在RStudio中可以使用View(orders)查看整个数据集。数据框输出有差别的原因在于,数据被默认存储为tibble数据格式。tibble也是一种数据框类型,但是跟dataframe略有不同,它更适合在tidyverse包中使用。

观察输出的数据可以发现,每一列下面都有对数据类型的描述。数据分析中常用的数据类型有以下7种。

·int:表示整数型变量。

·dbl:表示双精度浮点数型变量,或称实数。

·chr:表示字符向量,或称字符串。

·dttm:表示日期时间(日期+时间)型变量。

·lgl:表示逻辑型变量,是一个仅包括TRUE和FALSE的向量。

·fctr:表示因子,R用其来表示具有固定数目的值的分类变量。

·date:表示日期型变量。

tibble是一种简单数据框,它对传统数据框的功能进行了一些修改,以便在tidyverse包中使用。观察加载tidyverse包的输出信息时可以发现,tibble包也是tidyverse包中的核心包之一。创建tibble数据框的方式有下面两种:

使用tribble()函数创建数据框时,#开头的行是为了提示标题行的位置。另外,我们还可以使用as_tibble()函数将data.frame转换为tibble,这种格式变量通常以「~」开头,使用注释符号分隔能使输入更加整洁且便于对应表头。

相比于传统数据框(data.frame),tibble对打印方式进行了优化,主要体现在:只显示前10行结果,并且列适合屏幕,这种方式非常适合大数据集;tibble还会打印出列的类型。在功能方面,tibble与data.frame也有所区别,主要体现在:不能改变输入的类型(例如,不能将字符串转换为因子)、变量的名称;不能创建行名称;可以在tibble中将在R中无效的变量名称(即不符合语法的名称)作为列名称。列名称可以不以字母开头,可以包含特殊字符,如空格。要想引用这样的变量,需要使用反引号“`”将它们括起来。