我想dplyr与纯混合使用sql。的理由是,我一般喜欢sql到dsl提供的通过dplyr; 但是mutate()动词很有用。所以工作流可能看起来像
result = my.df >%> sql("select max(a) a_max,b,c [from X ?]
where b in ('b1','b2) group by b,c
having count(1) > 1
order by a desc, b")
>%> mutate(c = c * 100)
>%> sql("select a_max,b,c from X order by 1 desc, 3 desc")
Run Code Online (Sandbox Code Playgroud)
注意:这不是关于使用dslvs优点的辩论sql:这可能是一个冗长而微妙的辩论,并且两者都有可靠的理由。我怀疑要获得所请求的内容,需要挖掘github专门为此设计的存储库,但想检查我是否错过了内部dplyr或更广泛的某些功能tidy-verse。
另一个注意事项:dplyr我与一位非常熟练的用户一起工作。我不想打断/改变他的流程。我希望能够在dplyr工作流链的中间插入 sql,因为我可以轻松编写复杂的多级嵌套查询 - 并且比dplyrdsl快得多。
试试看tidyquery包装。链接:https : //cran.r-project.org/web/packages/tidyquery/index.html作者:Ian Cook
例子:
planes %>%
filter(engine == "Turbo-fan") %>%
query("SELECT manufacturer AS maker, COUNT(*) AS num_planes GROUP BY maker") %>%
arrange(desc(num_planes)) %>%
head(5)
#> # A tibble: 5 x 2
#> maker num_planes
#> <chr> <int>
#> 1 BOEING 1276
#> 2 BOMBARDIER INC 368
#> 3 AIRBUS 331
#> 4 EMBRAER 298
#> 5 AIRBUS INDUSTRIE 270
Run Code Online (Sandbox Code Playgroud)