tests/testthat/test-derive_var_analysis_ratio.R

test_that("Test 1: All Ratio Variables are Created", {
  expected_data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI, ~R2BASE, ~R2ANRLO, ~R2ANRHI,
    "P01", "ALT", 1, 27, 27, 6, 34, 1, 4.5, 0.794,
    "P01", "ALT", 2, 41, 27, 6, 34, 1.52, 6.83, 1.21,
    "P01", "ALT", 3, 17, 27, 6, 34, 0.63, 2.83, 0.5,
    "P02", "ALB", 1, 38, 38, 33, 49, 1, 1.15, 0.776,
    "P02", "ALB", 2, 39, 38, 33, 49, 1.03, 1.18, 0.796,
    "P02", "ALB", 3, 37, 38, 33, 49, 0.974, 1.12, 0.755
  )

  data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI,
    "P01", "ALT", 1, 27, 27, 6, 34,
    "P01", "ALT", 2, 41, 27, 6, 34,
    "P01", "ALT", 3, 17, 27, 6, 34,
    "P02", "ALB", 1, 38, 38, 33, 49,
    "P02", "ALB", 2, 39, 38, 33, 49,
    "P02", "ALB", 3, 37, 38, 33, 49
  )

  actual_data <- data %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = BASE
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRLO
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRHI
    )

  expect_dfs_equal(expected_data,
    actual_data,
    keys = c("USUBJID", "PARAMCD", "SEQ"),
    tolerance = 0.2
  )
})

test_that("Test 2: All Ratio Variables are Created while NAs present", {
  expected_data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI, ~R2BASE, ~R2ANRLO, ~R2ANRHI,
    "P01", "ALT", 1, 27, 27, 6, 34, 1, 4.5, 0.794,
    "P01", "ALT", 2, 41, 27, 6, 34, 1.52, 6.83, 1.21,
    "P01", "ALT", 3, NA_real_, 0, 0, 0, NA_real_, NA_real_, NA_real_,
    "P02", "ALB", 1, 0, 0, 0, 0, NA_real_, NA_real_, NA_real_,
    "P02", "ALB", 2, 39, 38, 33, 49, 1.03, 1.18, 0.796,
    "P02", "ALB", 3, 37, 38, 33, 49, 0.974, 1.12, 0.755
  )

  data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI,
    "P01", "ALT", 1, 27, 27, 6, 34,
    "P01", "ALT", 2, 41, 27, 6, 34,
    "P01", "ALT", 3, NA_real_, 0, 0, 0,
    "P02", "ALB", 1, 0, 0, 0, 0,
    "P02", "ALB", 2, 39, 38, 33, 49,
    "P02", "ALB", 3, 37, 38, 33, 49
  )

  actual_data <- data %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = BASE
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRLO
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRHI
    )

  expect_dfs_equal(expected_data,
    actual_data,
    keys = c("USUBJID", "PARAMCD", "SEQ"),
    tolerance = 0.2
  )
})

test_that("Test 3: User can supply custom variable by invoking override = TRUE
          and supplying a new_var name", {
  expected_data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI, ~custom1, ~custom2, ~custom3,
    "P01", "ALT", 1, 27, 27, 6, 34, 1, 4.5, 0.794,
    "P01", "ALT", 2, 41, 27, 6, 34, 1.52, 6.83, 1.21,
    "P01", "ALT", 3, NA_real_, 27, 6, 34, NA_real_, NA_real_, NA_real_,
    "P02", "ALB", 1, 38, 38, 33, 49, 1, 1.15, 0.776,
    "P02", "ALB", 2, 39, 38, 33, 49, 1.03, 1.18, 0.796,
    "P02", "ALB", 3, 37, 38, 33, 49, 0.974, 1.12, 0.755
  )

  data <- tibble::tribble(
    ~USUBJID, ~PARAMCD, ~SEQ, ~AVAL, ~BASE, ~ANRLO, ~ANRHI,
    "P01", "ALT", 1, 27, 27, 6, 34,
    "P01", "ALT", 2, 41, 27, 6, 34,
    "P01", "ALT", 3, NA_real_, 27, 6, 34,
    "P02", "ALB", 1, 38, 38, 33, 49,
    "P02", "ALB", 2, 39, 38, 33, 49,
    "P02", "ALB", 3, 37, 38, 33, 49
  )

  actual_data <- data %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = BASE,
      new_var = custom1
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRLO,
      new_var = custom2
    ) %>%
    derive_var_analysis_ratio(
      numer_var = AVAL,
      denom_var = ANRHI,
      new_var = custom3
    )

  expect_dfs_equal(expected_data,
    actual_data,
    keys = c("USUBJID", "PARAMCD", "SEQ"),
    tolerance = 0.2
  )
})

Try the admiral package in your browser

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

admiral documentation built on Oct. 19, 2023, 1:08 a.m.