tests/testthat/unit/test-key_by.R

context("  Key by")

test_that("The key_by verb works as expected.", {
    expected <- DT[, .(ans = mean(mpg)), keyby = vs]

    ans <- DT %>% start_expr %>% transmute(ans = mean(mpg)) %>% key_by(vs) %>% end_expr
    expect_identical(ans, expected)

    expected <- DT[, .(mean = mean(mpg), sd = sd(mpg)), keyby = .(vs, am)]

    ans <- DT %>%
        start_expr %>%
        transmute(mean = mean(mpg), sd = sd(mpg)) %>%
        key_by(vs, am) %>%
        end_expr

    expect_identical(ans, expected)

    ans <- DT %>%
        start_expr %>%
        transmute(mean = mean(mpg), sd = sd(mpg)) %>%
        key_by("vs", "am", .parse = TRUE) %>%
        end_expr

    expect_identical(ans, expected)

    desired_group <- "vs"

    ans <- DT %>%
        start_expr %>%
        select(mean = mean(mpg), sd = sd(mpg)) %>%
        key_by(!!desired_group, "am", .parse = TRUE) %>%
        end_expr

    expect_equal(ans, expected)
})

Try the table.express package in your browser

Any scripts or data that you put into this service are public.

table.express documentation built on April 3, 2023, 5:43 p.m.