r 语言读取excel文件,r语言如何读取excel( 二 )


> iris <- read_excel(path = readxl_example(path = "datasets.xlsx")) > str(iris) ## Classes 'tbl_df', 'tbl' and 'data.frame': 150 obs. of 5 variables:## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...## $ Species : chr "setosa" "setosa" "setosa" "setosa" ...之所以命名为iris , 是因为这个范例Excel文件中的第一个工作表就是该经典数据集 。函数excel_sheets可用于查询同一个文件中的工作表名称,其实现代码具体如下:
> excel_sheets(path = readxl_example(path = "datasets.xlsx"))## [1] "iris" "mtcars" "chickwts" "quakes"在datasets.xlsx中一共存在4个工作表,其中包含了4个最经典的R语言练习数据集 。在此 , 希望读者可以自行浏览这几个数据集,对数据集的格式、变量名称等情况有一定程度的了解 。
增加参数sheet或range可以读取指定工作表中的数据 。这里需要注意的是,上文提到了参数优先级的问题 。对于一般常见的练习数据集 , sheet参数指定的工作表已足够胜任 。读者只需要记住range参数可以用来处理特殊情况 , 也就是说,当设置sheet后依然对读取到的数据不满意的情况可以考虑使用range 。
下面的代码演示了sheet的两种传参方式:位置序号和名称 。推荐读者采用后者 。因为工作表被意外拖拽导致位置调换的情况常有发生,而位置意外发生调换之后读取的数据也会不同 , 这就增加了代码崩溃的风险 。如果使用名称,则会降低发生错误的几率 。示例代码如下:
> mtcars <- read_excel(path = readxl_example(path = "datasets.xlsx"),sheet = 2)> mtcars <- read_excel(path = readxl_example(path = "datasets.xlsx"),sheet = "mtcars")对于后面的参数,读者可以根据上文的解释,每次增加一个参数,来逐步掌握每一个参数的功能,这里不再赘述 。
02 DBI:数据库数据查询、下载
在使用R语言和数据库进行交互之前,读者们需要明确一个问题—是否有必要使用R来处理数据 。简单的数据处理任务,比如数据查询、筛选和简单运算,相应的数据库语言应该是比R语言更好的选择 。
不过当你对数据库语言并不熟悉,而且需要R语言强大的统计分析和绘图环境来处理数据库中的数据时 , DBI包绝对是一条捷径 。因为Hadley大神再一次拯救了“小白” 。
有了DBI包 , 不需要了解数据库交互中各个环节繁琐的理论知识和技巧,只需要明白如何通过DBI包来建立数据库连接、查询和读取数据即可 。不过,这个包也并非万能钥匙 , 想要无障碍地与数据库进行交互,以下6点是必备的前提 。

  1. 已知数据库的类型,例如 , MySQL、PostgreSQL 。
  2. 已经安装了相应数据库类型的R包 。
  3. 数据库服务器地址 。
  4. 数据库名称 。
  5. 接入数据库的权限、账号和密码 。
  6. 已安装dplyr包用来本地化数据库中的数据 。
使用R与数据库进行交互的一般流程为:建立连接→发送查询请求→获取相关数据 。下面,我们用PostgreSQL的数据库作为代码示例 。首先加载三个必备程序包,其中,DBI和PostgreSQL将用来建立与数据库的连接以及发送请求 。dplyr则是用来将数据库中的数据保存到本地 。加载代码具体如下:
> library(DBI)> library(dplyr)> library(RPostgreSQL)不同类型的数据库可能需要调整dbConnect中的参数,具体调整方法读者可以参见帮助文档 。数据库服务器地址、名称、权限等信息需要输入到单引号中,请一定留意是否有空格符号不小心被复制或者因误操作输入其中 。如果担心密码泄露的话,则可以使用RStudio中自带的密码弹窗功能 。
dbListTables函数可以用来查询数据库中的详细内容,并以字符串向量的格式返回,如果数据库中无内容,则会返回空值 。调整dbConnect参数的示例代码如下:
> db_connect <- dbConnect(RPostgreSQL::PostgreSQL(),dbname = '数据库名称',host = '服务器地址',user = '用户名',password = "密码") > dbListTables(db_connect) ## [1] "MetaData" "Table1" "Table2"优化后的tbl函数可以直接调取已经建立连接的数据库中的指定数据,并保存为tibble格式的数据集 。下面的代码中 , 逗号后面的参数也可以用“Table1”或“Table2”来表示:
> tbl(src = http://www.baifabohui.com/smjk/db_connect, dbListTables(db_connect)[1])数据库交互的有关内容完全可以独立成书,这里我们只介绍了最简单的基本用法,以使大家对如何使用R来查询数据库有个最基本的印象 。


推荐阅读