JS

很多方法可以用R查询数据。这篇文章展示了三种最常见的方法:

  运用 DBI

  使用dplyr语法

  使用R note book

  背景

  最近的一些软件包改进可以更轻松地将数据库与R一起使用。下面的查询示例演示了这些R软件包的一些功能。

  DBI。该DBI规范经历了许多最近的改进。使用数据库时,应始终使用符合要求DBI的包。

  dplyr和dbplyr。该dplyr软件包现在具有用于与数据库通信的通用SQL后端,新dbplyr软件包将R代码转换为特定于数据库的SQL。在撰写R代码时,以下数据库支持SQL转化:Oracle,Microsoft SQL Server,PostgreSQL,Amazon Redshift,Apache Hive和Apache Impala。随着时间的推移会有更多。

  odbc。odbc只要安装了ODBC驱动程序,R包就提供了连接到任何数据库的标准方法。所述odbcř包是DBI兼容的,并建议用于ODBC连接。

  RStudio最近对其产品进行了改进,因此它们可以更好地与数据库配合使用。

  RStudio IDE(v1.1)。使用最新版本的RStudio IDE,可以连接,浏览和查看各种数据库中的数据。IDE具有用于设置新连接的向导,以及用于浏览已建立连接的选项卡。这些新功能是可扩展的,可以与任何具有连接契约的 R包一起使用。

  RStudio 。如果使用的是RStudio专业产品,可以免费下载RStudio Professional Drivers。以下示例使用Oracle ODBC驱动程序。如果使用的是开源工具,则可以使用自己的驱动程序或使用社区程序包 - 存在许多用于连接各种数据库的开源驱动程序和社区程序包。

  将数据库与R一起使用是一个广泛的主题,还有更多工作要做。早期的博客文章讨论了我们的愿景。该愿景的一部分是创建一个网站,可以在一个地方找到有关数据库和R的所有内容。要了解更多信息,请访问我们的网站db.rstudio.com。

  示例:查询Oracle数据库中的库数据

  在此示例中,我们将查询Oracle数据库中的银行数据。我们使用DBI和odbc包连接到数据库。此特定连接需要数据库驱动程序和数据源名称(DSN),这两者都由系统管理员配置。您的连接可能使用其他方法。

  library(DBI)

  library(dplyr)

  library(dbplyr)

  library(odbc)

  con - dbConnect(odbc::odbc(), Oracle DB)

  1.使用查询 DBI

  您可以DBI使用该dbGetQuery()功能查询数据。只需将SQL代码粘贴到R函数中作为带引号的字符串。此方法有时称为传递SQL代码,可能是查询数据的最简单方法。应谨慎使用,以根据需要逃避您的报价。例如,'yes'写成'yes'。

  dbGetQuery(con,'

  select month_idx, year, month,

  sum(case when term_deposit = \'yes\' then 1.0 else 0.0 end) as subscribe,

  count(*) as total

  from bank

  group by month_idx, year, month

  ')

  2.使用dplyr语法进行查询

  您可以用dplyr语法编写代码,并将dplyr代码转换为SQL。在dplyr语法中编写查询有几个好处:您可以为R对象和数据库表保持相同的一致语言,不需要SQL或特定的SQL变体,您可以利用dplyr使用延迟评估的事实。dplyr语法很容易阅读,但您始终可以使用该show_query()函数检查SQL转换。

  q1 - tbl(con, bank) %%

  group_by(month_idx, year, month) %%

  summarise(

  subscribe = sum(ifelse(term_deposit == yes, 1, 0)),

  total = n())

  show_query(q1)

  SELECT month_idx, year, month, SUM(CASE WHEN (term_deposit = 'yes') THEN (1.0) ELSE (0.0) END) AS subscribe, COUNT(*) AS totalFROM (bank)

  GROUP BY month_idx, year, mo

  3.使用Rnote book 查询

  您是否知道可以在R Notebook代码块中运行SQL代码?要使用SQL,请在“ 文件”“新建文件”菜单下的RStudio IDE中打开R Notebook。使用,启动新的代码块,并使用代码块选项指定您的连接。如果要将查询输出发送到R数据帧,请在代码块选项中使用。指定时,您将能够在后续R代码块中使用输出。在这个例子中,我们使用输出。{sql}connection=conoutput.var = mydataframeoutput.varggplot2

  SELECT month_idx, year, month, SUM(CASE WHEN (term_deposit = 'yes') THEN (1.0) ELSE (0.0) END) AS subscribe,

  COUNT(*) AS totalFROM (bank)

  GROUP BY month_idx, year, month

  library(ggplot2)

  ggplot(mydataframe, aes(total, subscribe, color = year)) +

  geom_point() +

  xlab(Total contacts) +

  ylab(Term Deposit Subscriptions) +

  ggtitle(Contact volume)

  

  image.png

  摘要

  使用R查询数据没有单一的最佳方法。您可以选择多种方法,每种方法都有其优点。以下是使用本文中介绍的方法的一些优点。

  方法

  好处

  DBI :: dbGetQuery

  需要的依赖性更少

  dplyr语法

  对R和数据库对象使用相同的语法

  不需要SQL知识

  代码是SQL变体的标准

  懒惰的评价

  R Notebook SQL引擎

  复制并粘贴SQL - 无需格式化

  SQL语法突出显示

使用R的数据库查询的更多相关文章

  1. Atitit  DbServiceV4qb9 数据库查询类库v4 新特性

    Atitit  DbServiceV4qb9 数据库查询类库v4 新特性     V4新特性 安全特性,屏蔽了executeUpdate,使用v2版 Sql异常转换,特别转换了DuplicateEnt ...

  2. 【转】Delphi多线程学习(9):多线程数据库查询(ADO)

    原文:http://www.cnblogs.com/djcsch2001/articles/2382559.html ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用 ...

  3. 教程-Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  4. Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  5. 多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  6. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

  7. [转载]Hibernate如何提升数据库查询的性能

    目录(?)[-] 数据库查询性能的提升也是涉及到开发中的各个阶段在开发中选用正确的查询方法无疑是最基础也最简单的 SQL语句的优化 使用正确的查询方法 使用正确的抓取策略 Hibernate的性能优化 ...

  8. MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)

    转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...

  9. 转 zabbix 优化方法 以及 后台数据库查询方法 两则

    ############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...

随机推荐

  1. ps中的栅格化--引出--矢量图

    矢量图使用直线和曲线来描述图形,这些图形的元素是一些点.线.矩形.多边形.圆和弧线等等,它们都是通过数学公式计算获得的.例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色 ...

  2. angular前端框架

    总所周知,在前端开发中,大家用的比较多的框架就是angular,vue,react等,今天就为大家讲一下angular大家框架的原理及运用 1.本次所举的例子是以依赖require.js的, < ...

  3. checkBox的使用和事件监听

    直接上代码: <!DOCTYPE html> <html> <head> <title></title> </head> < ...

  4. 制作系统U盘,不用做任何动作直接从U盘启动装系统(非PE的)

    用U盘装系统可以用PE方式,进入PE系统,选择镜像文件,然后装,这种比较麻烦. 下面介绍一下从U盘启动,直接装系统的方法,这种方法从U盘启动后,不用做任何动作,就像用光盘装系统一样简单 首先要制作一下 ...

  5. [转载]ASP.NET-----Repeater数据控件的用法总结

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  6. 我是怎么样和Linux结缘并通过红帽RHCE认证的

    我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...

  7. ORA-01507: database not mounted

    今天启动数据库时报错了! SQL> startup mount ORACLE instance started. Total System Global Area  608174080 byte ...

  8. servlet之一(概念/如何写/运行/错误提示/乱码处理)

    # 1. 什么是Servlet?   sun公司制订的一种用来扩展web服务器功能的组件规范. ## (1) 扩展web服务器功能(servlet的产生背景)       web服务器只能处理静态资源 ...

  9. Git 的安装步骤

    Git 的安装步骤 一.下载Git Git 的官网:https://git-scm.com/ 在 Git 的官网中点击Downloads,进入如下页面: 选择对应的操作系统,以博主为例,点击Windo ...

  10. Python 线程调用

    简介: Python 线程可以通过主线程,调用线程来执行其他命令, 为Python提供更方便的使用. 并发线程测试 # 命令调用方式 import threading,time # 定义每个线程要运行 ...