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())

Arguments

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.

Value

project node.

Examples

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