# Kodebok_sjekk_foer_legg_til ----
test_that("kodebok_sjekk_foer_leggtil fungerer", {
df <- data.frame(var1 = c(1:5, 1:5),
var2 = rep(c(0, 1), 5),
var3 = c(1, 1, 1, 1, 1, 2, 2, 2, 3, NA),
var4 = rep(1, 10),
var4_tekst = rep("gammel tekst", 10),
var5 = c(rep(1, 8), NA, NA),
var6 = rep(NA, 10),
var7 = rep(1, 10),
var8 = rep(1, 10))
kb <- data.frame(fysisk_feltnavn = c(rep("var1", 5),
"var2", "var2",
"var3", "var3",
"var4",
"var5", "var5",
"var6", "var6",
"var7", "var7",
"var8", "var8"),
type = rep("Listevariabel", 18),
listeverdier = c(1:5,
0, 1,
1, 2,
1,
1, 2,
5:6,
1, 1,
1, 2),
listetekst = c(letters[1:5],
"nei", "ja",
"mann", "kvinne",
"Dette er nytt!",
"litt", "mye",
"verdi1", "verdi2",
"verdi1", "verdi2",
"2 ganger likt", "2 ganger likt"))
# Foreventer at FALSE dersom nytt variabelnavn allerede finnes i df
testthat::expect_false(
ablanor::kodebok_sjekk_foer_leggtil(
df = df,
tekst_variabel = "var4_tekst",
verdi_variabel = "var4",
koder = kb %>% dplyr::filter(fysisk_feltnavn == "var4")))
# Foreventer at FALSE dersom nivåer i df ikke finnes i kb
testthat::expect_false(
ablanor::kodebok_sjekk_foer_leggtil(
df = df,
tekst_variabel = "var3_tekst",
verdi_variabel = "var3",
koder = kb %>% dplyr::filter(fysisk_feltnavn == "var3")))
# Foreventer at FALSE dersom kb har duplikater
testthat::expect_false(
ablanor::kodebok_sjekk_foer_leggtil(
df = df,
tekst_variabel = "var7_tekst",
verdi_variabel = "var7",
koder = kb %>% dplyr::filter(fysisk_feltnavn == "var7")))
testthat::expect_false(
ablanor::kodebok_sjekk_foer_leggtil(
df = df,
tekst_variabel = "var8_tekst",
verdi_variabel = "var8",
koder = kb %>% dplyr::filter(fysisk_feltnavn == "var8")))
# Forventer feilmelding
testthat::expect_error(
ablanor::kodebok_fyll_listetekstvar(
df = df,
kb = kb %>% dplyr::select(-fysisk_feltnavn)))
})
# kodebok_sjekk_foer_fjerning ----
testthat::test_that("kodebok_sjekk_foer_fjerning fungerer for Listevariabel", {
df <- data.frame(var1 = c(1:5),
var1_tekst = letters[1:5],
var2 = c(1, 2, 1, 2, 1),
var2_tekst = c("ja", "nei", "ja", "nei", "ja"),
var3 = c(0, 0, 1, 1, 1),
var3_tekst = c("nei", "nei", "ja", "ja", "ja"),
var4_tekst = c("nei", "nei", "ja", "ja", "ja"))
kb <- data.frame(fysisk_feltnavn = c(rep("var1", 5),
"var2", "var2",
"var3", "var3",
"var4", "var4"),
type = rep("Listevariabel", 11),
listeverdier = c(1:5,
1, 2,
0, 1,
0, 1),
listetekst = c(letters[1:5],
"mann", "kvinne",
"nei", "ja",
"nei", "ja"))
# Forventer TRUE fordi verdiene overstemmer
testthat::expect_true(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var1",
tekst_variabel = "var1_tekst",
type = "Listevariabel"))
# forventer FALSE fordi var2_tekst er ulik verdiene i var2
testthat::expect_false(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var2",
tekst_variabel = "var2_tekst",
type = "Listevariabel"))
# forventer TRUE fordi kb og df overstemmer
testthat::expect_true(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var3",
tekst_variabel = "var3_tekst",
type = "Listevariabel"))
# Forventer FALSE fordi var4 mangler
testthat::expect_false(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var4",
tekst_variabel = "var4_tekst",
type = "Listevariabel"))
})
# Sjekk for fjerning for avkrysningsboks
testthat::test_that("skjekk foer fjerning fungerer for avkrysninsboks", {
# forventer at fungerer for binære avkrysningsbokser
df <- data.frame(var1 = rep(0, 5),
var1_tekst = rep("nei", 5),
var2 = rep(1, 5),
var3 = rep(NA, 5),
var3_tekst = rep(NA_character_, 5),
var4 = c(0, 1, 0, 1, NA),
var4_tekst = c("nei", "ja", "nei", "ja", NA_character_),
var5 = 1:5,
var2_tekst = rep("finnes allerede", 5))
kb <- data.frame(fysisk_feltnavn = paste0("var", 1:5),
type = rep("Avkrysningsboks", 5),
listeverdier = rep(NA, 5),
listetekst = rep(NA, 5))
testthat::expect_true(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var1",
tekst_variabel = "var1_tekst",
type = "Avkrysningsboks"))
testthat::expect_false(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var2",
tekst_variabel = "var2_tekst",
type = "Avkrysningsboks"))
testthat::expect_true(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var3",
tekst_variabel = "var3_tekst",
type = "Avkrysningsboks"))
testthat::expect_true(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var4",
tekst_variabel = "var4_tekst",
type = "Avkrysningsboks"))
testthat::expect_false(ablanor::kodebok_sjekk_foer_fjerning(
df = df,
kb = kb,
verdi_variabel = "var5",
tekst_variabel = "var5_tekst",
type = "Avkrysningsboks"))
})
# Kodebok_fyll_listetekst_var
test_that("kodebok_fyll_listetekstvar works", {
df <- data.frame(var1 = c(1:5, 1:5),
var2 = rep(c(0, 1), 5),
var3 = c(1, 1, 1, 1, 1, 2, 2, 2, 3, NA),
var4 = rep(1, 10),
var4_tekst = rep("gammel tekst", 10),
var5 = c(rep(1, 8), NA, NA),
var6 = rep(NA, 10))
kb <- data.frame(fysisk_feltnavn = c(rep("var1", 5),
"var2", "var2",
"var3", "var3",
"var4",
"var5", "var5",
"var6", "var6"),
type = rep("Listevariabel", 14),
listeverdier = c(1:5,
0, 1,
1, 2,
1,
1, 2,
5:6),
listetekst = c(letters[1:5],
"nei", "ja",
"mann", "kvinne",
"Dette er nytt!",
"litt", "mye",
"verdi1", "verdi2"))
# Forventer at autofyll for alle fungerer:
testthat::expect_equal(
ablanor::kodebok_fyll_listetekstvar(df = df,
kb = kb,
suffiks = "_tekst") %>%
names(),
c("var1", "var1_tekst", "var2", "var2_tekst",
"var3", "var4", "var4_tekst", "var5", "var5_tekst",
"var6", "var6_tekst"))
# Forventer at vi får bare en ny her:
testthat::expect_equal(
ablanor::kodebok_fyll_listetekstvar(df = df, kb, var1) %>% names(),
c("var1", "var1_tekst", "var2",
"var3", "var4", "var4_tekst", "var5", "var6"))
# Forventer at factor fungerer:
testthat::expect_true(all(
ablanor::kodebok_fyll_listetekstvar(df = df, kb) %>%
dplyr::filter(var2 == 0) %>%
dplyr::pull(var2_tekst) == "nei"))
testthat::expect_true(all(
ablanor::kodebok_fyll_listetekstvar(df = df, kb) %>%
dplyr::filter(var2 == 1) %>%
dplyr::pull(var2_tekst) == "ja"))
# Forventer IKKE overskrevert variabel var4_tekst som fantes allerede
testthat::expect_true(all(
ablanor::kodebok_fyll_listetekstvar(df = df, kb, var4) %>%
dplyr::pull(var4_tekst) == "gammel tekst"))
# Forventer at NA ikke blir fylt på med annen verdi i tekst
testthat::expect_true(all(
ablanor::kodebok_fyll_listetekstvar(df = df, kb) %>%
dplyr::filter(is.na(var5)) %>%
dplyr::pull(var5_tekst) %>%
is.na()))
# Forventer bare NA dersom ingen match
testthat::expect_true(all(
ablanor::kodebok_fyll_listetekstvar(df = df, kb, var6) %>%
dplyr::pull(var6_tekst) %>%
is.na()))
})
# Tekst for avkrysningsboks
test_that("Tekst for avkrysningsboks virker", {
# Tester for Avkrysningsboks
df <- data.frame(var1 = rep(0, 5),
var2 = rep(1, 5),
var3 = rep(NA, 5),
var4 = c(0, 1, 0, 1, NA),
var5 = 1:5,
var2_tekst = rep("finnes allerede", 5))
kb <- data.frame(fysisk_feltnavn = paste0("var", 1:5),
type = rep("Avkrysningsboks", 5),
listeverdier = rep(NA, 5),
listetekst = rep(NA, 5))
testthat::expect_equal(
ablanor::kodebok_fyll_avkrysningsboks(
df = df,
kb = kb,
suffiks = "_tekst") %>%
names(),
c("var1", "var1_tekst", "var2", "var3", "var3_tekst",
"var4", "var4_tekst", "var5", "var2_tekst"))
testthat::expect_equal(
ablanor::kodebok_fyll_avkrysningsboks(
df = df,
kb = kb,
var1,
suffiks = "_tekst") %>%
names(),
c("var1", "var1_tekst", "var2", "var3", "var4", "var5", "var2_tekst"))
testthat::expect_true(all(
ablanor::kodebok_fyll_avkrysningsboks(df = df,
kb = kb,
var2,
suffiks = "_tekst") %>%
dplyr::pull(var2_tekst) == "finnes allerede"))
testthat::expect_true(all(
ablanor::kodebok_fyll_avkrysningsboks(df = df,
kb = kb,
var1,
suffiks = "_tekst") %>%
dplyr::pull(var1_tekst) == "nei"))
testthat::expect_true(all(
ablanor::kodebok_fyll_avkrysningsboks(df = df,
kb = kb,
var3,
suffiks = "_tekst") %>%
dplyr::pull(var3_tekst) %>%
is.na()))
testthat::expect_true(all(
ablanor::kodebok_fyll_avkrysningsboks(df = df,
kb = kb,
var4,
suffiks = "_tekst") %>%
dplyr::filter(!is.na(var4_tekst)) %>%
dplyr::pull(var4_tekst) ==
c("nei", "ja", "nei", "ja")))
testthat::expect_error(
ablanor::kodebok_fyll_avkrysningsboks(df = df)
)
testthat::expect_error(
ablanor::kodebok_fyll_avkrysningsboks(kb = kb)
)
})
# kodebok_beholde_bare_listetekstvar
test_that("kodebok_beholde_bare_listetekstvar fungerer", {
df <- data.frame(var1 = c(1:5),
var1_tekst = letters[1:5],
var2 = c(1, 2, 1, 2, 1),
var2_tekst = c("ja", "nei", "ja", "nei", "ja"),
var3 = c(0, 0, 1, 1, 1),
var3_tekst = c("nei", "nei", "ja", "ja", "ja"),
var4_tekst = c("nei", "nei", "ja", "ja", "ja"))
kb <- data.frame(fysisk_feltnavn = c(rep("var1", 5),
"var2", "var2",
"var3", "var3",
"var4", "var4"),
type = rep("Listevariabel", 11),
listeverdier = c(1:5,
1, 2,
0, 1,
0, 1),
listetekst = c(letters[1:5],
"mann", "kvinne",
"nei", "ja",
"nei", "ja"))
# Fungerer for fjerning av alle variablene:
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(
df = df,
kb = kb,
suffiks = "_tekst",
fjerne_suffiks_fra_navn = TRUE) %>%
names(),
c("var1", "var2", "var2_tekst", "var3", "var4_tekst"))
# Fungerer for fjerning av en variabel
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(
df = df,
kb = kb,
var1,
suffiks = "_tekst",
fjerne_suffiks_fra_navn = TRUE) %>%
names(),
c("var1", "var2", "var2_tekst", "var3", "var3_tekst", "var4_tekst"))
# Omdøpe uten suffiks fungerer:
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(
df = df %>% dplyr::select("var1", "var1_tekst"),
kb = kb,
suffiks = "_tekst",
fjerne_suffiks_fra_navn = TRUE) %>%
names(),
"var1")
# Default verdier av funksjon fungerer
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(
df = df %>% dplyr::select("var1", "var1_tekst"),
kb = kb) %>%
names(),
"var1")
# Innhodet i nye variabler er riktig
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(
df = df %>% dplyr::select("var1", "var1_tekst"),
kb = kb) %>%
dplyr::pull(),
letters[1:5])
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb) %>%
dplyr::pull(var2),
c(1, 2, 1, 2, 1))
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb) %>%
dplyr::pull(var2_tekst),
c("ja", "nei", "ja", "nei", "ja"))
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb) %>%
dplyr::pull(var3),
c("nei", "nei", "ja", "ja", "ja"))
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb) %>%
dplyr::pull(var4_tekst),
c("nei", "nei", "ja", "ja", "ja"))
# Foreventer uforandret dersom ingen variabler har suffikset;
df <- data.frame(var2 = 1:5,
var3 = c("nei", "nei", "ja", "ja", "ja"))
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df, kb),
df
)
# forventer at fungerer for binære avkrysningsbokser
df <- data.frame(var1 = rep(0, 5),
var1_tekst = rep("nei", 5),
var2 = rep(1, 5),
var3 = rep(NA, 5),
var3_tekst = rep(NA_character_, 5),
var4 = c(0, 1, 0, 1, NA),
var4_tekst = c("nei", "ja", "nei", "ja", NA_character_),
var5 = 1:5,
var2_tekst = rep("finnes allerede", 5))
kb <- data.frame(fysisk_feltnavn = paste0("var", 1:5),
type = rep("Avkrysningsboks", 5),
listeverdier = rep(NA, 5),
listetekst = rep(NA, 5))
#
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb,
suffiks = "_tekst") %>%
names(),
c("var1", "var2", "var3", "var4", "var5", "var2_tekst"))
testthat::expect_equal(
ablanor::kodebok_beholde_bare_listetekstvar(df = df,
kb = kb,
suffiks = "_tekst",
var1) %>%
names(),
c("var1", "var2", "var3", "var3_tekst", "var4",
"var4_tekst", "var5", "var2_tekst"))
testthat::expect_error(
ablanor::kodebok_beholde_bare_listetekstvar(kb = kb,
suffiks = "_tekst", var1)
)
})
# kjeden av kodebok funkjsoner
test_that("kjeden av kodebok-funksjoner fungerer", {
. <- ""
df <- data.frame(var1 = 1:5,
var2 = rep(1, 5),
var3 = c(NA, 0, 1, 0, 1),
var4 = c(0, 1, 0, 1, NA),
var5 = 1:5,
var6 = c(0, 1, 2, 0, 1),
var7 = c(0, 1, 0, 1, 1),
var2_tekst = rep("finnes allerede", 5))
kb <- data.frame(fysisk_feltnavn = c(rep("var1", 5),
"var2", "var3", "var3",
"var4",
"var5", "var5", "var5",
"var6", "var7"),
type = c(rep("Listevariabel", 5),
"Avkrysningsboks", rep("Listevariabel", 2),
"Annet",
rep("Listevariabel", 3),
"Avkrysningsboks", "Avkrysningsboks"),
listeverdier = c(1:5, NA, 0:1, NA, 1:3, NA, NA),
listetekst = c(letters[1:5], NA, "mann", "kvinne", NA,
"ingenting", "litt", "mye", NA, NA))
df_out <- df %>%
ablanor::kodebok_fyll_listetekstvar(df = .,
kb = kb,
suffiks = "_tekst") %>%
ablanor::kodebok_fyll_avkrysningsboks(df = .,
kb = kb,
suffiks = "_tekst") %>%
ablanor::kodebok_beholde_bare_listetekstvar(df = .,
kb = kb,
suffiks = "_tekst",
fjerne_suffiks_fra_navn = TRUE)
testthat::expect_true(all(
df_out %>%
dplyr::select(var1) == letters[1:5]))
testthat::expect_true(all(
df_out %>%
dplyr::select(var2) == rep(1, 5)))
testthat::expect_true(all(
df_out %>%
dplyr::select(var3) %>%
dplyr::filter(!is.na(var3)) ==
c("mann", "kvinne", "mann", "kvinne")))
testthat::expect_true(all(
df_out %>%
dplyr::select(var4) %>%
dplyr::filter(!is.na(var4)) == c(0, 1, 0, 1)))
testthat::expect_true(all(
df_out %>%
dplyr::select(var5) == 1:5))
testthat::expect_true(all(
df_out %>%
dplyr::select(var6) == c(0:2, 0:1)))
testthat::expect_true(all(
df_out %>%
dplyr::select(var7) == c("nei", "ja", "nei", "ja", "ja")))
testthat::expect_true(all(
df_out %>%
dplyr::select(var2_tekst) == rep("finnes allerede", 5)))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.