我试图了解如何在远程数据库上使用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()
这是一个例子,但我在尝试使用POSIXct日期和非基础R的其他函数时发现了类似的错误。
我的问题:我是否仅限于使用非常基本的聚合函数,如提到的here?如果没有,如何通过远程数据库上的dplyr实现其他功能(自定义,附加库等)?
答案 0 :(得分:1)
是的,dplyr
使用dbplyr
包进行SQL翻译。在其中,我们必须手动指定每个R命令如何转换为特定的SQL语法,因此在某些情况下,一个函数可能适用于一个数据库而不适用于其他数据库。我刚检查了PostgreSQL的翻译,看起来我们有paste()
但不是paste0()
的翻译。同时,您还可以在dplyr
谓词内传递SQL命令,例如,mutate(m = strpos(field1, "search"))
将运行PostgreSQL strpos
,用于在字段中定位字符串。