r - 在本地和远程数据库上使用 dplyr

标签 r dplyr dbplyr

我想了解如何使用 dplyr在远程数据库上与存储在 R 中的数据。也就是说,我不清楚哪些函数可以用于 mutate() .例如,这工作得很好:

diamonds %>%
    select(color, cut, price) %>%
    mutate(
        newcol = paste0(cut, color)
)

但是,如果我尝试使用 paste()在远程数据库(太大而无法在本地存储)上,我收到一条错误消息
Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  function paste0()

这是一个示例,但我在尝试使用来自非基础 R 的 POSIXct 日期和其他函数时注意到了类似的错误。

我的问题 :我是否仅限于使用非常基本的聚合函数,例如提到的 here ?如果没有,如何通过 dplyr 在远程数据库上实现其他功能(自定义、附加库等)?

最佳答案

是的,dplyr使用 dbplyr用于 SQL 翻译的包。在其中,我们必须手动指定每个 R 命令如何转换为特定的 SQL 语法,因此在某些情况下,一个函数可能适用于一个数据库而不适用于其他数据库。我刚刚检查了 PostgreSQL 的翻译,看起来我们有 paste() 的翻译。但不是 paste0() .同时,您还可以在 dplyr 内部传递 SQL 命令。动词,例如,mutate(m = strpos(field1, "search"))将运行 PostgreSQL strpos用于在字段中定位字符串。

关于r - 在本地和远程数据库上使用 dplyr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191532/

相关文章:

r - R中函数的计算周期

根据条件替换组

r - dbplyr:从数据库中的表中删除行

r - left_join 用于 tbl : na_matches not working

c - 链接到外部 C 库的 R 包

r - df_parse_dta_file() 错误 : Failed to parse C:/Users/folder/data. dta:不支持此版本的文件格式

r - 托管和设置自己的 Shiny 应用程序,无需 Shiny 服务器

R将行分隔为由开始和结束指定的列

R:删除具有非缺失变量完全重叠的重复行

sql - 如何在没有数据库连接的情况下从 dbplyr 生成 SQL?