【发布时间】:2020-01-09 15:17:16
【问题描述】:
我未能找到解决此任务的方法:
对于简单的情况,让我们以mtcars 为例,让我们使用相同数据的 PostgreSQL 版本:
library(RPostgreSQL)
library(DBI)
library(tidyverse)
pgdrv <- dbDriver(drvName = "PostgreSQL")
db <-dbConnect(pgdrv,
dbname="DBMTCARS",
host="127.0.0.1", port=5432,
user = 'postgres')
copy_to(db, mtcars)
mtcars2 <- tbl(db, mtcars)
任务很简单,为每个组获取一个唯一编号。
所以:
mtcars %>% mutate( gi = group_indices(., gear, carb))
现在我需要与 DB 版本相同的版本
mtcars2 %>% mutate( gi = group_indices(., gear, carb))
但我得到了:
UseMethod("escape") 中的错误: 没有适用于 'escape' 的方法应用于“c('tbl_PostgreSQLConnection', 'tbl_dbi', 'tbl_sql', 'tbl_lazy', 'tbl')”类的对象
我知道如何使用 SQL 语法:
select *, (dense_rank over(order by gear, carb)) as gi FROM mtcars ;
但我想使用 dplyr 语法或..
如何在tbl_dbi 类中直接使用dbSendQuery?
提前致谢
【问题讨论】:
-
并非 tidyverse 中的所有函数都适用于数据库
-
有替代方法吗??
-
那么我想我需要在
tbl_dbi中使用dbSendQuery
标签: r postgresql dplyr dbplyr