实用技巧:对R中数据进行sql查询操作(sqldf)

实用技巧:对R中数据进行sql查询操作(sqldf)

我们知道,sql(结构化查询语言)语句是专门用来操纵数据库的,有了query语句,数据分析的过程就好像游戏开了外挂,一下子就so easy了,老板再也不用担心我不能及时给他分析报告了。哈哈,扯远了~下面切入正题
在R中,我们在分析数据之前需要先对数据进行各种筛选和整合,但是在对数据进行筛选和整合的过程中会用到各种包和各种函数。这固然也能解决我们遇到的问题,但是带来的一个新的问题便是我们需要来背记这些函数,函数固然不难,但是背的多了就容易造成知识体系的混淆。尤其是对于新手来说,用的本来就不够熟练,每次用前还要去翻函数手册,去查函数的用法,造成时间的严重浪费。时间是有限的,人生的乐趣是无穷的,把时间节省下来去谈谈恋爱 ,品品诗和远方不好嘛~

下面便是我给广大熟悉数据库的朋友带来的福音:使用sql语句来操纵R中的数据。

操纵R中的数据需要用到sqldf包,因此我们在用之前需要先下载该包:

install.packages("sqldf")#下载sqldf包

随后进行包的加载:

library(sqldf)#加载sqldf包

sqldf顾名思义,就是sql-dataframe,这个包是用来操纵R中的数据框类型的数据的,因此在进行应用的时候需要先将我们待操纵的数据转换为dataframe类型。不过还好,一般我们从外部读取的数据都是默认保存为dataframe类型的。要是还不放心,可以在使用之前先用class(data_name)看一下我们数据的类型,不是的话就将其转换过来。

加载了sqldf,也有了df类型的数据,接下来就是对我们的数据进行操作了,这里我用我电脑里读取的数据做个示范:

data <- read.csv("数据路径",header=T,sep="\t")

数据路径就根据自己电脑里边数据的存放位置填写就好;header=T表示我们要把第一行数据设置为行标题,这个类似于Python中pandas读取数据时设置的header=0;sep="\t"设置的是数据的分割方式。

关于sep="\t"这里需要声明一点,不是必须的啊,这个是个人习惯 csv格式默认的是以逗号来分割数据,其实我们写sep=",“或者不写都是可以的(默认为sep=”,"),只不过有时候我用read.csv()来读取表格(table)中的数据,其数据分割方式为"\t",因此为了避免不留意时出错,我就在读取数据时都写上了sep="\t",因为我试过,在read.csv()时写sep="\t"是能够正确读取的呦~

print(data)#在console打印数据

在这里插入图片描述

View(data)#以表格显示数据

在这里插入图片描述

print(data_name)和View(data_name)是查看数据框类型数据的两种方式,大家可以根据个人喜好自行选择。

sqldf("select * from data;")#读取所有数据

在这里插入图片描述

sqldf("select id from data;")#读取id行

在这里插入图片描述

其实sqldf的用法非常简单,就是直接在函数里边写我们的sql执行语句就可以了,函数操纵的对象便是R中的数据框类型的数据。

温馨提示:不要尝试用sqldf来连接MySQL数据库,虽然它也提供了连接数据库的功能,但你在使用的时候会它会报错,而且很难解决。建议在连接MySQL数据的时候用RMySQL包而不是sqldf,不信的话代码给你了,可以自己试试看 (坏笑~!)

sqldf("select...",dbname="db",drv="MySQL",user="root",password="password",host="localhost",port=3306)

前面说了用sqldf连接MySQL数据库会报错,我们只用sqldf来操作R中的dataframe数据就行了,但是在使用的时候有同学会发现自己没有尝试连接MySQL数据库怎么也报错了,这个很有可能是你library(RMySQL)这个包了,你可以尝试将其detach,然后再运行,代码如下

detach("package:RMySQL", unload=True)

细心的小伙伴可能发现,我在前面读取数据时用了header=T,但在此处用了unload=True,这是因为在R中True和T是等价的哦。一般我都会简写为T,最后这么写纯粹是为了给大家提醒这个知识点,哈哈。可是在Python中可不能这么写呦,在Python中两者不等价。

最后的最后我们来复习下sql语句:
select … from table_name where … group by … having … order by … limit n,m;

执行顺序为:
from > where > group by > having > select >order by >limit n,m

这个只是最简单的形式,因为sql语句在数据分析中是重中之重,后边我会给大家详细讲解的(比心~)

在这里插入图片描述
关注六六DATA公众号获取更多实用知识:
一个集数据分析、数据可视化、电脑技巧和资源共享于一身的公众号!
在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值