project data by grouping, and adding aggregate columns.
project_se(source, assignments, ..., groupby = c(), env = parent.frame()) aggregate_se(source, assignments, ..., groupby = c(), env = parent.frame())
source | source to select from. |
---|---|
assignments | new column assignment expressions. |
... | not used, force later arguments to be by name |
groupby | grouping columns. |
env | environment to look for values in. |
project node.
if (requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) { my_db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:") d <- rq_copy_to( my_db, 'd', data.frame(group = c('a', 'a', 'b', 'b'), val = 1:4, stringsAsFactors = FALSE)) op_tree <- d %.>% project_se(., groupby = "group", "vmax" %:=% "max(val)") cat(format(op_tree)) sql <- to_sql(op_tree, my_db) cat(sql) execute(my_db, op_tree) %.>% print(.) op_tree <- d %.>% project_se(., groupby = NULL, "vmax" %:=% "max(val)") cat(format(op_tree)) sql <- to_sql(op_tree, my_db) cat(sql) execute(my_db, op_tree) %.>% print(.) DBI::dbDisconnect(my_db) }#> mk_td("d", c( #> "group", #> "val")) %.>% #> project(., vmax := max(val), #> groupby = c('group')) #> SELECT `group`, max ( `val` ) AS `vmax` FROM ( #> SELECT #> `group`, #> `val` #> FROM #> `d` #> ) tsql_79879680555684161256_0000000000 #> GROUP BY #> `group` #> group vmax #> 1 a 2 #> 2 b 4 #> mk_td("d", c( #> "group", #> "val")) %.>% #> project(., vmax := max(val), #> groupby = c()) #> SELECT max ( `val` ) AS `vmax` FROM ( #> SELECT #> `val` #> FROM #> `d` #> ) tsql_54595027929007766507_0000000000 #> vmax #> 1 4