This is a non_sql_node, so please see non_sql_node
for some of the issues for this node type.
rsummary_node(
source,
...,
quartiles = FALSE,
tmp_name_source = wrapr::mk_tmp_name_source("sn"),
temporary = TRUE
)
incoming source (relop node or data.frame).
force later arguments to be by name
logical, if TRUE add Q1 (25%), median (50%), Q3 (75%) quartiles.
wrapr::mk_tmp_name_source(), temporary name generator.
logical, if TRUE use temporary tables
rsummary node
if (requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) {
d <- data.frame(p= c(TRUE, FALSE, NA),
s= NA,
w= 1:3,
x= c(NA,2,3),
y= factor(c(3,5,NA)),
z= c('a',NA,'a'),
stringsAsFactors=FALSE)
db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
RSQLite::initExtension(db)
rq_copy_to(db, "dRemote", d,
overwrite = TRUE,
temporary = TRUE)
ops <- db_td(db, "dRemote") %.>%
extend(., v %:=% ifelse(x>2, "x", "y")) %.>%
rsummary_node(.)
cat(format(ops))
print(to_sql(ops, db))
reshdl <- materialize(db, ops)
print(DBI::dbGetQuery(db, to_sql(reshdl, db)))
DBI::dbDisconnect(db)
}
#> mk_td("dRemote", c(
#> "p",
#> "s",
#> "w",
#> "x",
#> "y",
#> "z")) %.>%
#> extend(.,
#> v := ifelse(x > 2, "x", "y")) %.>%
#> non_sql_node(., rsummary_node(.))
#> [[1]]
#> [1] "CREATE TEMPORARY TABLE `sn_24431360869548363303_0000000000` AS SELECT\n `p`,\n `s`,\n `w`,\n `x`,\n `y`,\n `z`,\n ( CASE WHEN ( `x` > 2 ) THEN ( 'x' ) WHEN NOT ( `x` > 2 ) THEN ( 'y' ) ELSE NULL END ) AS `v`\n FROM (\n SELECT\n `p`,\n `s`,\n `w`,\n `x`,\n `y`,\n `z`\n FROM\n `dRemote`\n ) tsql_78528726904048914645_0000000000\n"
#>
#> [[2]]
#> [1] "non SQL step: rsummary_node(.)"
#>
#> [[3]]
#> [1] " SELECT\n `column`,\n `index`,\n `class`,\n `nrows`,\n `nna`,\n `nunique`,\n `min`,\n `max`,\n `mean`,\n `sd`,\n `lexmin`,\n `lexmax`\n FROM\n `sn_24431360869548363303_0000000001`\n"
#>
#> column index class nrows nna nunique min max mean sd lexmin lexmax
#> 1 p 1 integer 3 1 NA 0 1 0.5 0.7071068 <NA> <NA>
#> 2 s 2 integer 3 3 0 NA NA NA NA <NA> <NA>
#> 3 w 3 integer 3 0 NA 1 3 2.0 1.0000000 <NA> <NA>
#> 4 x 4 numeric 3 1 NA 2 3 2.5 0.7071068 <NA> <NA>
#> 5 y 5 character 3 1 2 NA NA NA NA 3 5
#> 6 z 6 character 3 1 1 NA NA NA NA a a
#> 7 v 7 logical 3 1 2 0 0 0.0 0.0000000 FALSE FALSE