tests/testthat/test-create_bysg.R

# Create dataset for testing
df <- tibble::tribble(
  ~id, ~bdi_s0, ~bdi_s1, ~bdi_s2, ~bdi_s3, ~bdi_s4, ~bdi_s5, ~bdi_s6, ~bdi_s7, ~bdi_s8, ~bdi_s9, ~bdi_s10, ~bdi_s11, ~bdi_s12,
  1, 33, 35, 37, 34, 23, 24, 21, 29, 17, 11, 11, 10, 7,
  2, 26, 26, NA, 26, NA, 27, 17, 19, 11, 10, 3, NA, 7,
  3, 40, 35, 38, 35, 37, 36, 37, NA, 35, 26, 24, NA, 19,
  4, 33, 31, 30, 32, 22, 22, 20, 21, 19, 24, 33, 30, 28,
  5, 39, 39, 37, 36, 26, 26, 23, 21, 19, 6, 7, 8, 8,
  6, 35, 37, NA, 23, NA, 23, 21, NA, NA, 19, NA, 16, 13,
  7, NA, 37, NA, 23, 21, NA, 21, NA, NA, NA, NA, NA, 20,
  8, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
  9, 33, 35, 34, 32, 23, 24, 22, 21, 17, 14, 10, 13, 11,
  10, 34, 35, 35, 25, 25, 17, 17, 16, 16, 11, 9, 7, 8,
  11, 30, 40, NA, 36, 37, 36, 37, NA, 34, 26, 25, NA, 19,
  12, 32, 38, 38, 31, 23, 21, 22, 24, 25, 30, 31, NA, 25,
  13, 34, 34, 33, 36, 23, 25, 23, 19, 18, 10, 9, 8, 9,
  14, 37, 39, 37, 23, NA, 23, 21, NA, NA, 21, NA, 16, 14,
  15, 25, 28, 19, 23, 12, 13, NA, 13, NA, NA, NA, NA, 22,
  16, NA, 25, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 20,
  17, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
  18, 33, NA, 38, 35, 24, NA, 22, 17, 16, NA, 9, 11, 13
)

test_that("Test create bysg dataset", {
  df_bysg_test <- create_bysg(
    data = df,
    sg_crit1_cutoff = 7,
    sg_crit3_adjust = TRUE,
    id_var_name = "id",
    tx_start_var_name = "bdi_s1",
    tx_end_var_name = "bdi_s12",
    sg_var_list = c(
      "bdi_s1", "bdi_s2", "bdi_s3",
      "bdi_s4", "bdi_s5", "bdi_s6",
      "bdi_s7", "bdi_s8", "bdi_s9",
      "bdi_s10", "bdi_s11", "bdi_s12"
    ),
    sg_measure_name = "bdi"
  )

  df_bysg_expect <- tibble::tribble(
    ~id, ~id_sg, ~sg_crit123, ~sg_session_n, ~sg_freq_byperson, ~bdi_s1, ~bdi_s2, ~bdi_s3, ~bdi_s4, ~bdi_s5, ~bdi_s6, ~bdi_s7, ~bdi_s8, ~bdi_s9, ~bdi_s10, ~bdi_s11, ~bdi_s12, ~sg_bdi_2n, ~sg_bdi_1n, ~sg_bdi_n, ~sg_bdi_n1, ~sg_bdi_n2, ~sg_bdi_n3, ~sg_magnitude, ~sg_bdi_tx_change, ~sg_change_proportion, ~sg_reversal_value, ~sg_reversal,
    1, "1_sg_3", 1, 3, 2, 35, 37, 34, 23, 24, 21, 29, 17, 11, 11, 10, 7, 35, 37, 34, 23, 24, 21, 11, 28, 0.39285714285714285, 28.5, 1,
    1, "1_sg_7", 1, 7, 2, 35, 37, 34, 23, 24, 21, 29, 17, 11, 11, 10, 7, 24, 21, 29, 17, 11, 11, 12, 28, 0.42857142857142855, 23, 0,
    3, "3_sg_8", 1, 8, 1, 35, 38, 35, 37, 36, 37, NA, 35, 26, 24, NA, 19, 37, NA, 35, 26, 24, NA, 9, 16, 0.5625, 30.5, 0,
    4, "4_sg_3", 1, 3, 1, 31, 30, 32, 22, 22, 20, 21, 19, 24, 33, 30, 28, 31, 30, 32, 22, 22, 20, 10, 3, 3.3333333333333335, 27, 1,
    5, "5_sg_3", 1, 3, 2, 39, 37, 36, 26, 26, 23, 21, 19, 6, 7, 8, 8, 39, 37, 36, 26, 26, 23, 10, 31, 0.3225806451612903, 31, 0,
    5, "5_sg_8", 1, 8, 2, 39, 37, 36, 26, 26, 23, 21, 19, 6, 7, 8, 8, 23, 21, 19, 6, 7, 8, 13, 31, 0.41935483870967744, 12.5, 0,
    9, "9_sg_3", 1, 3, 1, 35, 34, 32, 23, 24, 22, 21, 17, 14, 10, 13, 11, 35, 34, 32, 23, 24, 22, 9, 24, 0.375, 27.5, 0,
    10, "10_sg_2", 1, 2, 2, 35, 35, 25, 25, 17, 17, 16, 16, 11, 9, 7, 8, NA, 35, 35, 25, 25, 17, 10, 27, 0.37037037037037035, 30, 0,
    10, "10_sg_4", 1, 4, 2, 35, 35, 25, 25, 17, 17, 16, 16, 11, 9, 7, 8, 35, 25, 25, 17, 17, 16, 8, 27, 0.2962962962962963, 21, 0,
    12, "12_sg_3", 1, 3, 1, 38, 38, 31, 23, 21, 22, 24, 25, 30, 31, NA, 25, 38, 38, 31, 23, 21, 22, 8, 13, 0.6153846153846154, 27, 1,
    13, "13_sg_3", 1, 3, 2, 34, 33, 36, 23, 25, 23, 19, 18, 10, 9, 8, 9, 34, 33, 36, 23, 25, 23, 13, 25, 0.52, 29.5, 0,
    13, "13_sg_8", 1, 8, 2, 34, 33, 36, 23, 25, 23, 19, 18, 10, 9, 8, 9, 23, 19, 18, 10, 9, 8, 8, 25, 0.32, 14, 0,
    14, "14_sg_2", 1, 2, 1, 39, 37, 23, NA, 23, 21, NA, NA, 21, NA, 16, 14, NA, 39, 37, 23, NA, 23, 14, 25, 0.56, 30, 0,
    18, "18_sg_3", 1, 3, 1, NA, 38, 35, 24, NA, 22, 17, 16, NA, 9, 11, 13, NA, 38, 35, 24, NA, 22, 11, NA, NA, 29.5, 0
  )

  expect_equal(df_bysg_test, df_bysg_expect)
})
milanwiedemann/suddengains documentation built on March 6, 2023, 6:21 p.m.