context('test describe_all')
set.seed(1234)
df1 <- dplyr::tibble(
g1 = factor(sample(1:2, 50, replace = TRUE), labels=c('a','b')),
g2 = sample(1:4, 50, replace = TRUE),
g3 = ordered(sample(letters[1:3], 50, replace = TRUE)),
a = rnorm(50),
b = rpois(50, 10),
c = sample(letters, 50, replace=TRUE),
d = sample(c(T,F), 50, replace=TRUE),
a_b = a*b,
b_sq = b^2
)
test_that('describe_all returns a list', {
expect_is(describe_all(df1), 'list')
})
test_that('describe_all handles no categorical', {
expect_is(describe_all(df1[,c('g2', 'a', 'b')]), 'list')
})
test_that('describe_all handles no numeric', {
expect_is(describe_all(df1[,c('g1', 'c', 'd')]), 'list')
})
test_that('describe_all fails if not a data frame', {
expect_error(describe_all(df1 %>% pull(g1)))
})
test_that('describe_all can take digits argument', {
res <- describe_all(data.frame(x=pi), digits = 2)[[1]]
expect_equal(nchar(as.character(res$Mean)), 4)
})
test_that('describe_all can handle empty levels', {
res <- describe_all(iris %>% filter(Species != 'setosa'))[[2]]
expect_equal(nrow(res), 2)
})
test_that('describe_all can handle empty categorical variables', {
expect_warning(describe_all(iris %>% mutate(Species = NA)))
})
test_that('describe_all can drop NA', {
expect_equal(nrow(describe_all(iris %>% rbind(NA), include_NAcat = T)[[2]]),
4)
})
test_that('describe_all can drop NA with old arg', {
expect_equal(nrow(describe_all(iris %>% rbind(NA), NAcat_include = T)[[2]]),
4)
})
test_that('describe_all can handle grouped df', {
expect_is(describe_all(iris %>% group_by(Species)), 'list')
})
# describe_all_num --------------------------------------------------------
test_that('describe_all_num returns a data.frame', {
expect_is(describe_all_num(df1 %>% select_if(is.numeric)), 'data.frame')
})
test_that('describe_all_num fails if not a data frame', {
expect_error(describe_all_num(df1 %>% pull(a)))
})
test_that('describe_all_num returns message if no numeric', {
expect_message(describe_all_num(df1 %>%
select_if(function(x) !is.numeric(x))))
})
# describe_all_cat --------------------------------------------------------
test_that('describe_all_cat returns a data.frame', {
expect_is(describe_all_cat(df1) %>% select_if(function(x) !is.numeric(x)),
'data.frame')
})
test_that('describe_all_cat fails if not a data frame', {
expect_error(describe_all_cat(df1 %>% pull(a)))
})
test_that('describe_all_cat returns message if no categorical', {
expect_message(describe_all_cat(df1 %>% select(a, b)))
})
test_that('describe_all_cat returns warning if no levels', {
expect_warning(describe_all_cat(df1 %>% select(g1) %>% filter(g1 == 'c')))
})
test_that('describe_all_cat can do different max_levels', {
expect_s3_class(describe_all_cat(df1, max_levels = 2), 'data.frame')
})
test_that('describe_all_cat can do numeric', {
# including numeric should include variable g2 (4 levels)
expect_true('g2' %in% describe_all_cat(df1,
max_levels = 4,
include_numeric = T)$Variable)
})
test_that('describe_all_cat can drop NA', {
expect_equal(nrow(describe_all_cat(iris %>% rbind(NA), include_NAcat = T)), 4)
})
test_that('describe_all_cat can handle too big max_levels', {
expect_s3_class(describe_all_cat(df1, max_levels = Inf, include_numeric = T),
'data.frame')
})
test_that('describe_all_cat can sort result', {
init_sort <- describe_all_cat(df1,
max_levels = 3,
include_numeric = T,
sort_by_freq = T)
init_nosort <- describe_all_cat(df1,
max_levels = 3,
include_numeric = T,
sort_by_freq = F)
expect_false(identical(init_nosort, init_sort))
})
test_that('describe_all_cat will return list data frame', {
init <- describe_all_cat(
df1,
max_levels = 3,
include_numeric = T,
as_ordered = T
)
expect_is(init$data, 'list')
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.