我有三个mySQL数据库表1-3。我的目标是使用R dplyr对这些表执行一些左连接和内连接操作。我正在尝试使用R中的dbplyr将原始SQL代码转换为dplyr工作流。我原始SQL查询的一部分如下所示:
INNER JOIN table3 ON tabl1.well = table3.well AND table2.plex LIKE table3.set
到目前为止我的R代码看起来像:
library(RMySQL)
library(dbplyr)
library(dplyr)
t1 <- tbl(con,'table1')
t2 <- tbl(con,'table2')
t3 <- tbl(con,'table3')
st <- select(t2,set) %>% filter(!duplicated(set))
t1 %>% left_join(t2,.,by=c('d_id'='p_id') %>%
inner_join(t3,by='well') %>%
filter(plex %in% st) %>% # this part is wrong!!
collect()
运行上述R代码时,结果与SQL查询不同。我想知道将SQL查询的内部连接部分转换为R中的dplyr语法的正确方法是什么。两列上的简单inner_join与dplyr相当简单。但我很难将带有AND和LIKE子句的部分翻译成dplyr lingo。不幸的是,我没有这个例子的任何可复制数据。
答案 0 :(得分:1)
dbplyr
将保留中缀函数。换句话说,您可以使用%like%
运算符作为SQL LIKE的等效运算符。然后,您可以使用相同的通配符字符,例如:filter(name %like% "%text%")
应该起作用