Nothing
test_that("Total is added to one variable", {
input <- tibble::tribble(~cohort, ~sex, ~value,
"a", "m", NA,
"a", "f", 3,
"b", "m", 2,
"b", "f", 4
)
expect <- tibble::tribble(~cohort, ~sex, ~value,
"a", "m", NA,
"a", "f", 3,
"b", "m", 2,
"b", "f", 4,
"Total", "m", 2,
"Total", "f", 7
)
expect_equal(add_total_level_to_var(input, 'cohort') %>% dplyr::arrange_all(),
expect %>% dplyr::arrange_all())
})
test_that("Totals are added to two variables", {
read_data <- function(table_name) {
table_name %>%
get_data_path() %>%
readRDS %>%
dplyr::as_tibble()
}
bexsta <- read_data("BEXSTA")
bexsta_without_totals <- read_data("BEXSTA_WITHOUT_TOTALS")
output <-
add_totals_to_df(df = bexsta_without_totals,
variables = c("place of birth", "gender"),
level_name = "T",
sum_var = "persons"
) %>%
dplyr::arrange_all()
expect_equal(dplyr::arrange_all(output), dplyr::arrange_all(bexsta))
# Test having multiple level_names
bexsta2 <-
bexsta %>%
dplyr::mutate(gender = ifelse(gender == "T", "Total", gender))
output2 <-
add_totals_to_df(df = bexsta_without_totals,
variables = c("place of birth", "gender"),
level_names = c("T", "Total"),
sum_var = "persons"
) %>%
dplyr::arrange_all()
expect_equal(dplyr::arrange_all(output2), dplyr::arrange_all(bexsta2))
})
test_that("adds total levels to data without them", {
metadata_path <- get_metadata_path("BEXSTA")
px1 <- temp_px_file()
px2 <- temp_px_file()
px(input = metadata_path, data = get_data_path("BEXSTA")) %>%
px_save(path = px1)
px(input = metadata_path, data = get_data_path("BEXSTA_WITHOUT_TOTALS")) %>%
px_add_totals(c("place of birth", "gender")) %>%
px_save(path = px2)
expect_equal_lines(px1, px2)
})
test_that("metadata without elimination values use default value", {
levels <-
px(input = get_metadata_path("BEXSTA"),
data = get_data_path("BEXSTA_WITHOUT_TOTALS")
) %>%
px_elimination(NULL) %>%
px_add_totals(value = "gender") %>%
magrittr::extract2("data") %>%
dplyr::pull(gender) %>%
unique()
expect_equal(levels, c("Total", "K", "M"))
})
test_that("do not ignore NA when summing", {
df <- tibble::tribble(~category, ~n,
"a", 10,
"b", 20,
"c", NA
)
result <-
px(df) %>%
px_add_totals("category", na.rm = FALSE) %>%
magrittr::extract2("data") %>%
dplyr::pull(n)
expect_identical(result, c(NA, 10, 20, NA))
})
test_that("Add totals work for multiple languages", {
# Create px object with multilingual add_totals
x <-
population_gl %>%
px() %>%
px_languages(c('en', 'da')) %>%
px_elimination(dplyr::tribble(~`variable-code`, ~elimination,
'gender', 'Total'
)
) %>%
px_add_totals('gender')
# px_add_totals adds both 'en' and 'da' level in data. This is a mistake.
gender_levels <-
x %>%
px_data() %>%
dplyr::distinct(gender) %>%
dplyr::pull(gender)
expect_identical(gender_levels, c("Total", "male", "female"))
})
test_that("Add totals adds elimination", {
default_elimination <-
population_gl %>%
px() %>%
px_add_totals('gender') %>%
px_elimination()
expect_identical(default_elimination,
dplyr::tibble('variable-code' = 'gender',
'elimination' = 'Total'
)
)
})
test_that("Elimination and values are preserved when changing data frame", {
tmp_px_file <- temp_px_file()
population_gl %>%
px() %>%
px_add_totals('gender') %>%
px_save(tmp_px_file)
x <-
px(tmp_px_file) %>%
px_data(population_gl)
expect_identical(px_elimination(x),
dplyr::tibble('variable-code' = 'gender',
'elimination' = 'Total'
)
)
elimination_values <-
x %>%
px_values() %>%
dplyr::semi_join(px_elimination(x),
by = c('variable-code' = 'variable-code',
'code' = 'elimination'
)
) %>%
dplyr::select("variable-code", "elimination" = "code")
expect_identical(elimination_values, px_elimination(x))
})
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.