对于数据分析人员而言,R语言基本能够支持数据分析过程中的绝大部分需求。但对于习惯使用SQL语句处理数据的数据分析师,似乎更愿意将数据查询过程放在数据库中实现。sqldf包的出现,对这部分分析师来说绝对算是一个神作,因为它可以实现在R语言中使用SQL语句对data.frame进行查询操作。
目录:
1. sqldf介绍
2.sqldf包安装
2.sqldf包的使用
sqldf包介绍
sqldf包是用于在R语言环境中,对data.frame格式的数据使用SQL进行查询处理的R包,能够使使用者能够方便的操作data.frame数据。使用者可以只根据数据框的名词进行SQL查询。同时还支持使用者直接利用sqldf包连接数据库,执行SQL语句,并将结果回到R语言中。总而言之,sqldf包对数据库的数据查询与R语言的数据整合起到了很好的衔接作用。
sqldf包的安装
sqldf包托管在cran上,因此可以使用R语言标准的安装语句进行sqldf的安装。
安装环境:MAC OS
sqldf包的安装依赖于gsubfn包、 proto包, RSQLite包,因此在安装sqldf包的过程中,系统会自动安装相关依赖包。
install.packages("sqldf")
当上述命令执行完毕,表面sqldf包已经安装完成,此时可以使用library(sqldf)函数调用sqldf包。
library(sqldf)
看看sqldf包的版本
packageVersion("sqldf")
[1] ‘0.4.10’
sqldf包的使用
1.简单查询
以iris数据集为例,使用sqldf包进行简单的查询
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
#使用sqldf函数进行SQL查询
sqldf('select * from iris limit 5')
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
#使用sqldf函数进行条件查询
sqldf("select * from iris where Species == 'setosa' limit 10")
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
#使用sqldf更新数据
sqldf(c("update iris set Species = 'test' where Species == 'setosa' ", "select * from main.iris limit 10"))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 test
2 4.9 3.0 1.4 0.2 test
3 4.7 3.2 1.3 0.2 test
4 4.6 3.1 1.5 0.2 test
5 5.0 3.6 1.4 0.2 test
6 5.4 3.9 1.7 0.4 test
7 4.6 3.4 1.4 0.3 test
8 5.0 3.4 1.5 0.2 test
9 4.4 2.9 1.4 0.2 test
10 4.9 3.1 1.5 0.1 test
使用sqldf远程连接数据库操作
首先加载RMySQL包
library(RMySQL)
sqldf("select * from t_data",dbname="test",drv="MySQL",
user="root",password="",host="127.0.0.1,port=3306)
通过注明mysql账户信息,用户可以直接使用sqldf包连接数据库,并执行SQL查询语句,同时返回结果数据框。
注意:sqldf包默认使用SQLite语言,当需要调整时,则可以通过改变drv参数来实现。