Nothing
require(DSLite)
require(DSI)
require(dplyr)
require(dsTidyverse)
require(dsBaseClient)
mtcars <- mtcars %>% mutate(cat_var = factor(ifelse(mpg > 20, "high", "low")))
login_data <- .prepare_dslite(assign_method = "caseWhenDS", tables = list(mtcars = mtcars))
conns <- datashield.login(logins = login_data)
datashield.assign.table(conns, "mtcars", "mtcars")
test_that("ds.case_when passes and numeric condition and numeric output", {
skip_if_not_installed("dsBaseClient")
ds.case_when(
tidy_expr = list(
mtcars$mpg < 20 ~ "low",
mtcars$mpg >= 20 & mtcars$mpg < 30 ~ "medium",
mtcars$mpg >= 30 ~ "high"
),
newobj = "test",
datasources = conns
)
nqmes <- names(ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts)
expect_equal(
nqmes,
c("high", "low", "medium", "NA")
)
expect_equal(
ds.class("test", datasources = conns)[[1]],
"character"
)
counts <- ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts
expect_equal(
as.numeric(counts, datasources = conns),
c(12, 54, 30, 0)
)
})
test_that("ds.case_when correctly passes argument with numeric condition and numeric outcome", {
skip_if_not_installed("dsBaseClient")
ds.case_when(
tidy_expr = list(
mtcars$mpg < 20 ~ 20,
mtcars$mpg >= 20 & mtcars$mpg < 30 ~ 30,
mtcars$mpg >= 30 ~ 40
),
newobj = "test",
datasources = conns
)
nqmes <- names(ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts)
expect_equal(
nqmes,
c("20", "30", "40", "NA")
)
expect_equal(
ds.class("test", datasources = conns)[[1]],
"numeric"
)
counts <- ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts
expect_equal(
as.numeric(counts, datasources = conns),
c(54, 30, 12, 0)
)
})
test_that("ds.case_when correctly passes argument with categorical condition and categorical outcome", {
skip_if_not_installed("dsBaseClient")
ds.case_when(
tidy_expr = list(
mtcars$gear == 2 ~ "low",
mtcars$gear == 3 ~ "medium",
mtcars$gear == 4 ~ "high",
mtcars$gear == 5 ~ "very_high"
),
newobj = "test",
datasources = conns
)
nqmes <- names(ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts)
expect_equal(
nqmes,
c("high", "medium", "very_high", "NA")
)
expect_equal(
ds.class("test", datasources = conns)[[1]],
"character"
)
counts <- ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts
expect_equal(
as.numeric(counts, datasources = conns),
c(36, 45, 15, 0)
)
})
test_that("ds.case_when correctly passes .default argument", {
skip_if_not_installed("dsBaseClient")
ds.case_when(
tidy_expr = list(
mtcars$gear == 2 ~ "low",
mtcars$gear == 3 ~ "medium",
mtcars$gear == 5 ~ "very_high"
),
.default = "something_missing",
newobj = "test",
datasources = conns
)
nqmes <- names(ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts)
expect_equal(
nqmes,
c("medium", "something_missing", "very_high", "NA")
)
expect_equal(
ds.class("test", datasources = conns)[[1]],
"character"
)
counts <- ds.table("test", datasources = conns)$output.list$TABLES.COMBINED_all.sources_counts
expect_equal(
as.numeric(counts, datasources = conns),
c(45, 36, 15, 0)
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.