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. python ddt 实现数据驱动一

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...

  2. django登录功能(简单在POST请求)

    第一  先在templates中创立index.html !DOCTYPE html> <head> <meta charset="UTF-8"> & ...

  3. quartz-job实现定时任务配置

    使用quartz开源调度框架,写服务实现在一些指定场景发送特定短信,创建一个实现org.quartz.Job接口的java类.Job接口包含唯一的方法: public void execute(Job ...

  4. nginx/ajax跨子域请求的两种现代方法以及403解决

    因为面向互联网的性质,我们公司的大部分系统都采用多子域的方式进行开发和部署,以达到松耦合和分布式的目的,因此子系统间的交互不可避免.虽然通过后台的rpc框架解决了大部分的交互问题,但有些情况下,前端直 ...

  5. 动态规划(Dynamic Programming)

    introduction 大部分书籍介绍"动态规划"时,都会从"菲波纳切数列"讲起. 菲波纳切数列 递归解法 C++ 代码如下 unsigned long in ...

  6. 05: api认证

    1.1 api认证原理介绍 1.api认证原理:客户端生成秘钥 1) 客户端与服务器端有一个相同的字符串作为auth_key 2) 客户端使用encryption="auth_key|tim ...

  7. 20145105 《Java程序设计》第6周学习总结

    20145105 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 一.InputStream与OutputStream (一)串流设计的概念 输入串流代表对象:j ...

  8. IDEA中使用.ignore插件忽略不必要提交的文件

    使用的IDE是IntelliJ IDEA,发现IDEA在提交项目到本地仓库的时候,会把.idea文件夹中的内容也提交上去,这里面放的是一些项目的配置信息,包括历史记录,版本控制信息等.可以不传到Git ...

  9. C# 将文件转换为 Stream

    public Stream FileToStream(string fileName) { // 打开文件 FileStream fileStream = new FileStream(fileNam ...

  10. 论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS

    论文地址:https://arxiv.org/abs/1608.08710 主要思想 这篇文章主要讲了对filters的裁剪,裁剪方法是计算L1范数,然后裁剪掉较少的,多少取决于加速比. 实现效果 V ...