Supports bquote() .()-style name abstraction including .(-) notation to promote strings to names (please see here: https://github.com/WinVector/rquery/blob/master/Examples/Substitution/Substitution.md).

project(source, ..., groupby = c(), env = parent.frame())

project_nse(source, ..., groupby = c(), env = parent.frame())

aggregate_nse(source, ..., groupby = c(), env = parent.frame())

Arguments

source

source to select from.

...

new column assignment expressions.

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(., 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(., 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_62625376304862552260_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_72338018638540219795_0000000000
#>   vmax
#> 1    4