Package {staat1cho}


Title: Study Indicators Based on Dutch Higher Education Data (1CHO)
Version: 0.1.0
Description: Calculates enrolment, graduation, dropout, and programme-switch indicators from the Dutch higher education registration data (1CHO) supplied by DUO. Includes an interactive 'Shiny' dashboard for exploring results.
License: MIT + file LICENSE
URL: https://github.com/cedanl/staat-van-onderwijsinstelling
BugReports: https://github.com/cedanl/staat-van-onderwijsinstelling/issues
Encoding: UTF-8
Language: nl
RoxygenNote: 7.3.3
Depends: R (≥ 4.1.0)
Imports: cli, dplyr, forcats, readr, rlang, shiny
Suggests: bslib, DT, ggplot2, knitr, plotly, rmarkdown, scales, testthat (≥ 3.0.0), tibble, tidyr
VignetteBuilder: knitr
Config/testthat/edition: 3
NeedsCompilation: no
Packaged: 2026-05-13 12:27:33 UTC; Aslam
Author: Aslam Tanjung [aut, cre], Veerle van Son [aut], Damiëtte Bakx-van den Brink [aut]
Maintainer: Aslam Tanjung <aslam.tanjung@surf.nl>
Repository: CRAN
Date/Publication: 2026-05-18 18:40:02 UTC

staat1cho: Studie-indicatoren op basis van 1CHO-data

Description

Berekent instroom-, rendement-, uitval- en studiewisselindicatoren vanuit de 1CHO-aanlevering van DUO.

Author(s)

Maintainer: Aslam Tanjung aslam.tanjung@surf.nl

Authors:

See Also

Useful links:


Bereken rendementsindicatoren per cohort

Description

Koppelt diplomagegevens aan het instroomcohort en berekent of een student binnen 3, 5 of 8 jaar een diploma heeft behaald.

Usage

bereken_rendement(cohorten_instroom, diploma_behaald)

Arguments

cohorten_instroom

Tibble zoals gemaakt door maak_instroom_cohort()

diploma_behaald

Tibble zoals gemaakt door maak_diploma_behaald()

Value

Een tibble met kolommen persoonsgebonden_nummer, eerstejaar_instelling, jaar_eerste_diploma, verblijfsjaar_eerste_diploma, diploma, rendement_xjaar, en factorkolommen rendement_3jr, rendement_5jr, rendement_8jr

Examples

cohort <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S2"),
  eerstejaar_instelling = 2020L
)
diploma <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  jaar_eerste_diploma = 2022L,
  verblijfsjaar_eerste_diploma = 3L,
  diploma = "Diploma behaald (excl. propedeuse)"
)
bereken_rendement(cohort, diploma)

Bereken studiewisselindicatoren per cohort

Description

Bepaalt per student of zij binnen 1 of 3 jaar van opleiding zijn gewisseld. Studenten die al zijn uitgevallen of gediplomeerd in de meetperiode worden buiten beschouwing gelaten.

Usage

bereken_studiewissel(
  basisbestand,
  cohorten_instroom,
  diploma_behaald,
  uitval_indicatoren
)

Arguments

basisbestand

Tibble zoals gemaakt door maak_basisbestand()

cohorten_instroom

Tibble zoals gemaakt door maak_instroom_cohort()

diploma_behaald

Tibble zoals gemaakt door maak_diploma_behaald()

uitval_indicatoren

Tibble zoals gemaakt door bereken_uitval()

Value

Een tibble met kolommen persoonsgebonden_nummer, studiewissel_1jr, studiewissel_3jr (factoren) en aanvullende switch-kolommen met de opleiding, opleidingsvorm, niveau en sector na de wissel

Examples

basis <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S1"),
  verblijfsjaar_actuele_instelling = c(1L, 2L),
  soort_inschrijving_actuele_instelling_label =
    "hoofdinschrijving binnen het domein actuele instelling",
  opleiding_actueel_equivalent = "34401",
  inschrijvingsjaar = c(2020L, 2021L),
  opleidingsvorm = "voltijd",
  type_hoger_onderwijs_binnen_soort_hoger_onderwijs = "bachelor",
  croho_onderdeel_actuele_opleiding = "techniek"
)
cohort <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  inschrijvingsjaar = 2020L,
  eerstejaar_instelling = 2020L,
  soort_diploma_instelling_label = NA_character_,
  opleidingsvorm_label = "voltijd"
)
diploma <- tibble::tibble(
  persoonsgebonden_nummer = character(0),
  jaar_eerste_diploma = integer(0),
  verblijfsjaar_eerste_diploma = integer(0),
  diploma = character(0)
)
uitval <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  uitval_xjr = NA_real_
)
bereken_studiewissel(basis, cohort, diploma, uitval)

Bereken uitvalindicatoren per cohort

Description

Bepaalt voor elke student in het instroomcohort of zij zijn uitgevallen, zittend of gediplomeerd. Uitval wordt gemarkeerd als een student niet meer ingeschreven staat en geen diploma heeft.

Usage

bereken_uitval(basisbestand, diploma_behaald, cohorten_instroom, jaar)

Arguments

basisbestand

Tibble zoals gemaakt door maak_basisbestand()

diploma_behaald

Tibble zoals gemaakt door maak_diploma_behaald()

cohorten_instroom

Tibble zoals gemaakt door maak_instroom_cohort()

jaar

Integer, peiljaar van de analyse (bijv. 2025). Studenten die in jaar - 1 nog ingeschreven staan, gelden als zittend.

Value

Een tibble met kolommen persoonsgebonden_nummer, laatste_jaar_inschrijving, diploma, status (factor: Diploma behaald / Zittend / Uitgevallen), uitval_xjr (jaar van uitval t.o.v. instroomjaar), uitval_1jr en uitval_3jr (factoren). Gooit een fout bij dubbele studenten of ontbrekende statussen.

Examples

basis <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S1", "S2"),
  inschrijvingsjaar = c(2020L, 2021L, 2020L),
  soort_inschrijving_actuele_instelling = "hoofdinschrijving"
)
diploma <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  jaar_eerste_diploma = 2022L,
  verblijfsjaar_eerste_diploma = 3L,
  diploma = "Diploma behaald (excl. propedeuse)"
)
cohort <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S2"),
  eerstejaar_instelling = 2020L
)
bereken_uitval(basis, diploma, cohort, jaar = 2023L)

Bereken studiewissel voor een specifiek verblijfsjaar-paar

Description

Hulpfunctie die de switchlogica hergebruikt voor zowel de 1jr- als 3jr-meting. Een wissel wordt vastgesteld als een student in jaar doeljaar een andere opleidingscode heeft dan in jaar 1, en het verschil in kalenderjaren gelijk is aan doeljaar - 1.

Usage

bereken_wissel_xjr(
  basisbestand,
  zittend,
  verblijfsjaren,
  doeljaar,
  label_gewisseld,
  label_niet,
  suffix
)

Arguments

basisbestand

Tibble zoals gemaakt door maak_basisbestand()

zittend

Tibble met de populatie waarvoor de wissel bepaald wordt

verblijfsjaren

Integer vector van lengte 2: begin- en eindjaar van het meetvenster, bijv. c(1, 2) of c(1, 4)

doeljaar

Integer, het verblijfsjaar waarop de wissel wordt gemeten

label_gewisseld

Character, label als student gewisseld is

label_niet

Character, label als student niet gewisseld is

suffix

Character, achtervoegsel voor de kolomnamen ("1jr" of "3jr")

Value

Een tibble met alleen de studenten die gewisseld zijn, met kolommen voor wissel, nieuwe opleidingscode, opleidingsvorm, niveau en sector


Combineer alle indicatoren tot een analysebestand

Description

Voegt rendement-, uitval- en studiewisselindicatoren samen met het instroomcohort. Past kolomnamen en factorniveaus aan voor gebruik in rapportages.

Usage

combineer_indicatoren(
  cohorten_instroom,
  rendement_indicatoren,
  uitval_indicatoren,
  studiewissel_indicatoren
)

Arguments

cohorten_instroom

Tibble zoals gemaakt door maak_instroom_cohort()

rendement_indicatoren

Tibble zoals gemaakt door bereken_rendement()

uitval_indicatoren

Tibble zoals gemaakt door bereken_uitval()

studiewissel_indicatoren

Tibble zoals gemaakt door bereken_studiewissel()

Value

Een tibble met een rij per student en gecombineerde indicator- kolommen, klaar voor rapportage. Bevat o.a. status, rendement, uitval, studiewissel en alle onderliggende deelscores.

Examples

cohort <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  inschrijvingsjaar = 2020L,
  eerstejaar_instelling = 2020L,
  geslacht_label = "man",
  locatie_label = "Breda",
  opleiding_actueel_equivalent = "34401",
  opleidingsvorm_label = "voltijd",
  type_hoger_onderwijs_binnen_soort_hoger_onderwijs = "ba",
  indicatie_internationale_student_label = "geen internationale student",
  indicatie_eer_actueel_label = "geen EER-student",
  croho_onderdeel_actuele_opleiding_label = "techniek",
  leeftijd_per_peildatum_1_oktober = 19L,
  postcodecijfers_student_op_1_oktober = "4818",
  postcodecijfers_van_de_hoogste_vooropl_voor_het_ho = "4818",
  soort_diploma_instelling_label = NA_character_
)
rendement <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  eerstejaar_instelling = 2020L,
  jaar_eerste_diploma = NA_real_,
  verblijfsjaar_eerste_diploma = NA_integer_,
  diploma = NA_character_,
  rendement_xjaar = factor(NA_character_),
  rendement_3jr = factor("Geen diploma"),
  rendement_5jr = factor("Geen diploma"),
  rendement_8jr = factor("Geen diploma")
)
uitval <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  laatste_jaar_inschrijving = NA_real_,
  diploma = NA_character_,
  status = factor("Zittend"),
  uitval_xjr = NA_real_,
  uitval_1jr = factor("Na 1 jaar nog ingeschreven of diploma behaald"),
  uitval_3jr = factor("Na 3 jaar nog ingeschreven of diploma behaald")
)
wissel <- tibble::tibble(
  persoonsgebonden_nummer = "S1",
  studiewissel_1jr = factor("Niet gewisseld binnen 1 jaar"),
  studiewissel_3jr = factor("Niet gewisseld binnen 3 jaar"),
  opleidingscode_na_switch1jr = factor(NA_character_),
  opleidingsvorm_na_switch1jr = factor(NA_character_),
  opleidingsniveau_na_switch1jr = factor(NA_character_),
  sector_na_switch1jr = factor(NA_character_),
  opleidingscode_na_switch3jr = factor(NA_character_),
  opleidingsvorm_na_switch3jr = factor(NA_character_),
  opleidingsniveau_na_switch3jr = factor(NA_character_),
  sector_na_switch3jr = factor(NA_character_)
)
suppressWarnings(combineer_indicatoren(cohort, rendement, uitval, wissel))

Lees het 1CHO-bestand in en voeg label-kolommen toe

Description

Leest een semicolongescheiden CSV-bestand (UTF-8) in en voegt extra ⁠_label⁠-kolommen toe voor gebruik in rapportages. Het pakket bevat een klein synthetisch voorbeeldbestand zonder echte persoonsgegevens (inst/extdata/voorbeeld_1cho.csv).

Usage

maak_basisbestand(pad_invoer)

Arguments

pad_invoer

Pad naar het semicolongescheiden CSV-bestand (UTF-8)

Value

Een tibble met alle 1CHO-regels plus extra ⁠_label⁠-kolommen die de originele categorische waarden bewaren voor gebruik in rapportages

Examples

# voorbeeld_1cho.csv is a small synthetic dataset bundled with the package
pad <- system.file("extdata/voorbeeld_1cho.csv", package = "staat1cho")
basis <- suppressMessages(maak_basisbestand(pad))

Maak een bestand met het vroegst behaalde diploma per student

Description

Filtert het basisbestand op diplomasoorten die gelden als afgeronde opleiding en behoudt per student alleen het eerste diploma op basis van diplomajaar.

Usage

maak_diploma_behaald(basisbestand)

Arguments

basisbestand

Tibble zoals gemaakt door maak_basisbestand()

Value

Een tibble met één rij per student met kolommen persoonsgebonden_nummer, jaar_eerste_diploma, verblijfsjaar_eerste_diploma en diploma. Gooit een fout bij dubbele persoonsgebonden nummers.

Examples

basis <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S2"),
  soort_diploma_instelling = c(
    "Hoofd-bachelor-diploma binnen de actuele instelling",
    NA_character_
  ),
  diplomajaar = c(2022L, NA_integer_),
  verblijfsjaar_actuele_instelling = c(3L, 1L)
)
maak_diploma_behaald(basis)

Maak een eerstejaarscohort per instelling

Description

Filtert het basisbestand op het opgegeven soort hoger onderwijs, hoofdinschrijvingen en eerste verblijfsjaar.

Usage

maak_instroom_cohort(basisbestand, soort_ho)

Arguments

basisbestand

Tibble zoals gemaakt door maak_basisbestand()

soort_ho

Character vector met toegestane waarden van soort_hoger_onderwijs, bijv. c("hoger beroepsonderwijs", "hbo")

Value

Een tibble met één rij per student, aangevuld met kolom eerstejaar_instelling (= inschrijvingsjaar). Gooit een fout als er dubbele persoonsgebonden nummers zijn.

Examples

basis <- tibble::tibble(
  persoonsgebonden_nummer = c("S1", "S2", "S3"),
  soort_hoger_onderwijs = c("hbo", "wo", "hbo"),
  soort_inschrijving_actuele_instelling_label =
    "hoofdinschrijving binnen het domein actuele instelling",
  verblijfsjaar_actuele_instelling = 1L,
  inschrijvingsjaar = 2020L,
  soort_diploma_instelling_label = NA_character_
)
maak_instroom_cohort(basis, "hbo")

Start het Staat van Onderwijsinstelling dashboard

Description

Opent de interactieve Shiny app waarmee je een 1CHO CSV-bestand kunt uploaden en studie-indicatoren kunt verkennen.

Usage

start_dashboard()

Value

No return value, called for side effects.

Examples

if (interactive()) {
  start_dashboard()
}