# Specify 2 datasets used for testing
df1 <- tibble::tribble(
~id, ~x_2n, ~x_1n, ~x_n, ~x_n1, ~x_n2, ~x_n3,
1, 28, 19, 23, 12, 13, NA,
2, 28, 19, 23, 11, 12, NA,
3, 28, 19, NA, 12, 13, NA,
4, 28, 19, 23, 12, 13, NA,
5, 28, 19, 23, 12, 14, NA,
6, 28, 19, NA, 12, 13, NA,
7, 28, 19, 23, 11, 12, NA,
8, 28, 25, 28, 11, 12, NA,
9, 28, 26, 28, 11, 12, NA,
10, NA, 26, 28, NA, 12, 11,
)
df2 <- tibble::tribble(
~id, ~x_2n, ~x_1n, ~x_n, ~x_n1, ~x_n2, ~x_n3,
1, 35, 37, 23, 23, 24, 21,
2, 35, 37, 34, 24, 24, 21,
3, 35, 37, 34, 34, 24, 21,
4, 35, 37, 34, 37, 37, 37
)
# Test that identifying sudden gains works as expected
test_that("Identify sg works 1", {
# Identify sudden gains in test data
df_test <- identify_sg(df1,
id_var_name = "id",
sg_crit1_cutoff = 7,
sg_var_list = c(
"x_2n", "x_1n", "x_n",
"x_n1", "x_n2", "x_n3"
)
)
# Specify expected dataset
df_expect <- tibble::tribble(
~id, ~x_2n, ~x_1n, ~x_n, ~x_n1, ~x_n2, ~x_n3, ~sg_2to3, ~sg_3to4, ~sg_4to5,
1, 28, 19, 23, 12, 13, NA, 0, 0, NA,
2, 28, 19, 23, 11, 12, NA, 0, 1, NA,
3, 28, 19, NA, 12, 13, NA, NA, NA, NA,
4, 28, 19, 23, 12, 13, NA, 0, 0, NA,
5, 28, 19, 23, 12, 14, NA, 0, 0, NA,
6, 28, 19, NA, 12, 13, NA, NA, NA, NA,
7, 28, 19, 23, 11, 12, NA, 0, 1, NA,
8, 28, 25, 28, 11, 12, NA, 0, 1, NA,
9, 28, 26, 28, 11, 12, NA, 0, 1, NA,
10, NA, 26, 28, NA, 12, 11, NA, NA, NA
) |> dplyr::mutate(
dplyr::across(sg_4to5, as.integer)
)
expect_equal(df_test, df_expect)
})
test_that("Identify sg works 2", {
df_test <- identify_sg(
data = df2,
sg_crit1_cutoff = 7,
id_var_name = "id",
sg_var_list = c(
"x_2n", "x_1n", "x_n",
"x_n1", "x_n2", "x_n3"
)
)
expect_equal(unlist(df_test[1, c("sg_2to3", "sg_3to4", "sg_4to5")], use.names = FALSE), c(1, 0, 0))
expect_equal(unlist(df_test[2, c("sg_2to3", "sg_3to4", "sg_4to5")], use.names = FALSE), c(0, 1, 0))
expect_equal(unlist(df_test[3, c("sg_2to3", "sg_3to4", "sg_4to5")], use.names = FALSE), c(0, 0, 1))
expect_equal(unlist(df_test[4, c("sg_2to3", "sg_3to4", "sg_4to5")], use.names = FALSE), c(0, 0, 0))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.