sqldf包:让SQL语句在R语言中执行

作者 | 二缺叶枫

来源 | R友舍

对于数据分析人员而言,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参数来实现。

更多资料见:https://github.com/ggrothendieck/sqldf

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值