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 to select from.
new column assignment expressions.
not used, force later arguments to be by name
grouping columns.
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_74082158708982771054_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_32622540591533557048_0000000000
#> vmax
#> 1 4