【发布时间】:2016-02-04 02:40:30
【问题描述】:
我试图了解如何在远程数据库上使用 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 允许您编写自动转换为 SQL 的 R 代码。dplyr 的目标不是用 R 函数替换每个 SQL 函数:即会很困难并且容易出错。相反,dplyr 只生成 SELECT 语句,这是您作为分析师最常编写的 SQL。" - cran.r-project.org/web/packages/dplyr/vignettes/databases.html
-
我认为你可以完成所有的 postgres 功能。以 paste0 为例,postgres 没有 paste0 (afaik),但它确实有
||所以你可以使用 mutate(xy = x %||% y)` 来获得字符串连接。 ?translate_sql 页面提到了这个例子。