tests/testthat/test-create_byperson.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 byperson dataset, select first gain", {
  df_byperson_first_test <- create_byperson(
    data = df,
    sg_crit1_cutoff = 7,
    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",
    multiple_sg_select = "first"
  )

  df_byperson_first_expect <- tibble::tribble(
    ~id, ~id_sg, ~sg_crit123, ~sg_session_n, ~sg_freq_byperson, ~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, ~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, "1_sg_3", 1, 3, 2, 35, 37, 34, 23, 24, 21, 11, 28, 0.392857142857143, 28.5, 1, 33, 35, 37, 34, 23, 24, 21, 29, 17, 11, 11, 10, 7,
    2, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 26, 26, NA, 26, NA, 27, 17, 19, 11, 10, 3, NA, 7,
    3, "3_sg_8", 1, 8, 1, 37, NA, 35, 26, 24, NA, 9, 16, 0.5625, 30.5, 0, 40, 35, 38, 35, 37, 36, 37, NA, 35, 26, 24, NA, 19,
    4, "4_sg_3", 1, 3, 1, 31, 30, 32, 22, 22, 20, 10, 3, 3.33333333333333, 27, 1, 33, 31, 30, 32, 22, 22, 20, 21, 19, 24, 33, 30, 28,
    5, "5_sg_3", 1, 3, 2, 39, 37, 36, 26, 26, 23, 10, 31, 0.32258064516129, 31, 0, 39, 39, 37, 36, 26, 26, 23, 21, 19, 6, 7, 8, 8,
    6, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 35, 37, NA, 23, NA, 23, 21, NA, NA, 19, NA, 16, 13,
    7, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 37, NA, 23, 21, NA, 21, NA, NA, NA, NA, NA, 20,
    8, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
    9, "9_sg_3", 1, 3, 1, 35, 34, 32, 23, 24, 22, 9, 24, 0.375, 27.5, 0, 33, 35, 34, 32, 23, 24, 22, 21, 17, 14, 10, 13, 11,
    10, "10_sg_2", 1, 2, 2, NA, 35, 35, 25, 25, 17, 10, 27, 0.37037037037037, 30, 0, 34, 35, 35, 25, 25, 17, 17, 16, 16, 11, 9, 7, 8,
    11, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 30, 40, NA, 36, 37, 36, 37, NA, 34, 26, 25, NA, 19,
    12, "12_sg_3", 1, 3, 1, 38, 38, 31, 23, 21, 22, 8, 13, 0.615384615384615, 27, 1, 32, 38, 38, 31, 23, 21, 22, 24, 25, 30, 31, NA, 25,
    13, "13_sg_3", 1, 3, 2, 34, 33, 36, 23, 25, 23, 13, 25, 0.52, 29.5, 0, 34, 34, 33, 36, 23, 25, 23, 19, 18, 10, 9, 8, 9,
    14, "14_sg_2", 1, 2, 1, NA, 39, 37, 23, NA, 23, 14, 25, 0.56, 30, 0, 37, 39, 37, 23, NA, 23, 21, NA, NA, 21, NA, 16, 14,
    15, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 25, 28, 19, 23, 12, 13, NA, 13, NA, NA, NA, NA, 22,
    16, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 25, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 20,
    17, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
    18, "18_sg_3", 1, 3, 1, NA, 38, 35, 24, NA, 22, 11, NA, NA, 29.5, 0, 33, NA, 38, 35, 24, NA, 22, 17, 16, NA, 9, 11, 13L
  )

  expect_equal(df_byperson_first_test, df_byperson_first_expect)
})

test_that("Test create byperson dataset, select largest gain", {
  df_byperson_largest_test <- create_byperson(
    data = df,
    sg_crit1_cutoff = 7,
    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",
    multiple_sg_select = "largest"
  )

  df_byperson_largest_expect <- tibble::tribble(
    ~id, ~id_sg, ~sg_crit123, ~sg_session_n, ~sg_freq_byperson, ~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, ~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, "1_sg_7", 1, 7, 2, 24, 21, 29, 17, 11, 11, 12, 28, 0.428571428571429, 23, 0, 33, 35, 37, 34, 23, 24, 21, 29, 17, 11, 11, 10, 7,
    2, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 26, 26, NA, 26, NA, 27, 17, 19, 11, 10, 3, NA, 7,
    3, "3_sg_8", 1, 8, 1, 37, NA, 35, 26, 24, NA, 9, 16, 0.5625, 30.5, 0, 40, 35, 38, 35, 37, 36, 37, NA, 35, 26, 24, NA, 19,
    4, "4_sg_3", 1, 3, 1, 31, 30, 32, 22, 22, 20, 10, 3, 3.33333333333333, 27, 1, 33, 31, 30, 32, 22, 22, 20, 21, 19, 24, 33, 30, 28,
    5, "5_sg_8", 1, 8, 2, 23, 21, 19, 6, 7, 8, 13, 31, 0.419354838709677, 12.5, 0, 39, 39, 37, 36, 26, 26, 23, 21, 19, 6, 7, 8, 8,
    6, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 35, 37, NA, 23, NA, 23, 21, NA, NA, 19, NA, 16, 13,
    7, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 37, NA, 23, 21, NA, 21, NA, NA, NA, NA, NA, 20,
    8, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
    9, "9_sg_3", 1, 3, 1, 35, 34, 32, 23, 24, 22, 9, 24, 0.375, 27.5, 0, 33, 35, 34, 32, 23, 24, 22, 21, 17, 14, 10, 13, 11,
    10, "10_sg_2", 1, 2, 2, NA, 35, 35, 25, 25, 17, 10, 27, 0.37037037037037, 30, 0, 34, 35, 35, 25, 25, 17, 17, 16, 16, 11, 9, 7, 8,
    11, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 30, 40, NA, 36, 37, 36, 37, NA, 34, 26, 25, NA, 19,
    12, "12_sg_3", 1, 3, 1, 38, 38, 31, 23, 21, 22, 8, 13, 0.615384615384615, 27, 1, 32, 38, 38, 31, 23, 21, 22, 24, 25, 30, 31, NA, 25,
    13, "13_sg_3", 1, 3, 2, 34, 33, 36, 23, 25, 23, 13, 25, 0.52, 29.5, 0, 34, 34, 33, 36, 23, 25, 23, 19, 18, 10, 9, 8, 9,
    14, "14_sg_2", 1, 2, 1, NA, 39, 37, 23, NA, 23, 14, 25, 0.56, 30, 0, 37, 39, 37, 23, NA, 23, 21, NA, NA, 21, NA, 16, 14,
    15, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 25, 28, 19, 23, 12, 13, NA, 13, NA, NA, NA, NA, 22,
    16, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 25, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 20,
    17, NA, 0, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 40, 41, 37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
    18, "18_sg_3", 1, 3, 1, NA, 38, 35, 24, NA, 22, 11, NA, NA, 29.5, 0, 33, NA, 38, 35, 24, NA, 22, 17, 16, NA, 9, 11, 13L
  )

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