| Title: | Study Indicators Based on Dutch Higher Education Data (1CHO) |
| Version: | 0.2.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, readxl, rmarkdown, scales, testthat (≥ 3.0.0), tibble, tidyr, writexl |
| VignetteBuilder: | knitr |
| Config/testthat/edition: | 3 |
| NeedsCompilation: | no |
| Packaged: | 2026-09-29 11:55:17 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-09-30 21:20:32 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:
Veerle van Son
Damiëtte Bakx-van den Brink
See Also
Useful links:
Redencodes bekostigingstatus (VLPBEK/DEFBEK)
Description
Decodeertabel voor de kolom CodeBekostigingstatus uit het analysebestand
voorlopige/definitieve bekostiging (DUO PvE HO-instelling, bijlage 8,
par. 17.7.3/19.7.5). Een inschrijving of graad kan meerdere codes
tegelijk hebben (komma-gescheiden in het brondata, bijv. "na,ti").
Usage
BEKOSTIGINGSTATUS_CODES
Format
Een tibble met kolommen code, omschrijving en herstelbaar
Details
herstelbaar geeft aan of de reden voortkomt uit een registratiefout van
de instelling die te herstellen is door tijdig opnieuw aan te leveren
(ti/tg, waarde TRUE), een structurele/wettelijke reden is die niet
te herstellen is (waarde FALSE), of helemaal geen "niet bekostigd"-reden
betreft maar juist aangeeft dat er (deels) bekostigd wordt (waarde NA).
Beschrijvingen van de studie-indicatoren
Description
Korte definities van alle indicatoren die het package berekent, uitgesplitst
naar analyseniveau. Afgeleid uit de berekeningslogica in
maak_instroom_cohort(), bereken_rendement(), bereken_uitval() en
bereken_studiewissel(). Bedoeld voor gebruik als tooltip-tekst in
dashboards.
Usage
DEFINITIES
Format
Een nested named list met sub-lijsten student en inschrijving
Details
Gebruik DEFINITIES[["student"]]$instroom of
DEFINITIES[["inschrijving"]]$instroom om de juiste definitie op te halen.
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,
niveau = "student",
laatste_jaar = NULL
)
Arguments
cohorten_instroom |
Tibble zoals gemaakt door |
diploma_behaald |
Tibble zoals gemaakt door |
niveau |
Analyseniveau: |
laatste_jaar |
Integer, het laatste inschrijvingsjaar in de data.
Standaard het laatste instroomjaar in |
Value
Een tibble met kolommen voor de sleutel(s), eerstejaar_instelling,
jaar_eerste_diploma, verblijfsjaar_eerste_diploma, diploma,
soort_diploma, opleidingscode_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, laatste_jaar = 2025L)
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 |
cohorten_instroom |
Tibble zoals gemaakt door |
diploma_behaald |
Tibble zoals gemaakt door |
uitval_indicatoren |
Tibble zoals gemaakt door Studiewissel is een studentniveau-indicator: |
Value
Een tibble met kolommen persoonsgebonden_nummer,
studiewissel_1jr, studiewissel_3jr (factoren; "Nog niet waarneembaar" als verblijfsjaar 2 resp. 4 van het cohort nog niet in de
data zit) 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 (of inschrijving) 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 = NULL,
niveau = "student"
)
Arguments
basisbestand |
Tibble zoals gemaakt door |
diploma_behaald |
Tibble zoals gemaakt door |
cohorten_instroom |
Tibble zoals gemaakt door |
jaar |
Integer, peiljaar van de analyse (bijv. |
niveau |
Analyseniveau: |
Value
Een tibble met de sleutelkolom(men), 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). Cohorten waarvoor de periode nog niet volledig
in de data zit (instroomjaar + 1 resp. + 3 na jaar - 1) krijgen
"Nog niet waarneembaar". Attribuut laatste_jaar is jaar - 1, het
laatste inschrijvingsjaar in de data. Gooit een fout bij dubbele
sleutelcombinaties 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 |
zittend |
Tibble met de populatie waarvoor de wissel bepaald wordt |
verblijfsjaren |
Integer vector van lengte 2: begin- en eindjaar van
het meetvenster, bijv. |
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 ( |
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 (optioneel) 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 = NULL,
niveau = "student"
)
Arguments
cohorten_instroom |
Tibble zoals gemaakt door |
rendement_indicatoren |
Tibble zoals gemaakt door |
uitval_indicatoren |
Tibble zoals gemaakt door |
studiewissel_indicatoren |
Tibble zoals gemaakt door
|
niveau |
Analyseniveau: |
Value
Een tibble met gecombineerde indicatorkolommen, klaar voor
rapportage. Bevat o.a. status, rendement, uitval en alle
onderliggende deelscores. Bij niveau = "student" zijn ook
studiewisselkolommen aanwezig als studiewissel_indicatoren is meegegeven.
vooropleiding vat de hoogste vooropleiding voor het HO samen (havo,
vwo, mbo, ho, buitenlands, overig of onbekend). eerstejaars_ho geeft
aan of het instroomjaar ook het eerste jaar in het hoger onderwijs is
("eerstejaars HO") of dat de student al eerder in het HO stond
("eerder in HO"). Beide zijn "onbekend" als de 1CHO-kolommen
hoogste_vooropleiding_voor_het_ho_omschrijving_vooropleiding resp.
eerste_jaar_in_het_hoger_onderwijs ontbreken.
Attributen: niveau en peildatum (1 oktober van het laatste
inschrijvingsjaar in de data, zie maak_benchmarkrapport()).
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))
Is een ID-kolom gepseudonimiseerd door 1cijferho?
Description
Herkent de pseudoniemen die 1cijferho kan maken: 64 hexadecimale tekens. Een gepseudonimiseerd 1CHO-bestand kan niet gekoppeld worden aan een niet-gepseudonimiseerd VAKHAVW- of VLPBEK-bestand.
Usage
is_gepseudonimiseerd(x)
Arguments
x |
Vector met persoonsnummers, bijv. |
Value
TRUE als alle niet-lege waarden pseudoniemen zijn, anders FALSE
Examples
is_gepseudonimiseerd(c("123456789", "987654321"))
is_gepseudonimiseerd(strrep("a1", 32))
Lees een VLPBEK-bestand in
Description
Leest een pipegescheiden VLPBEK-bestand (DUO-formaat, Voorlopige Bekostiging) in en extraheert de relevante kolommen per inschrijving. Alleen BRD-regels worden verwerkt; de koptekstregel (VLP), totaalregel (BLB) en sluitregel (SLR) worden genegeerd. Het peiljaar wordt uit de VLP-koptekstregel gelezen.
Usage
lees_bekostiging(pad)
Arguments
pad |
Pad naar het VLPBEK-bestand (latin-1 gecodeerd, pipegescheiden) |
Details
Koppelt nog niet aan het EV-bestand
Het VLPBEK-bestand bevat het BSN of onderwijsnummer. Het persoonsgebonden
nummer in het 1CHO-bestand (EV) is een eigen DUO-nummer en geen BSN, dus
verrijk_met_bekostiging() vindt bij echte leveringen (vrijwel) geen
inschrijvingen terug en waarschuwt. De koppeling wordt nog aangepast.
Value
Een tibble met de kolommen persoonsgebonden_nummer,
opleidingscode, inschrijvingsjaar, indicatie_hoofdinschrijving,
opleidingsvorm, sector, bekostigingsstatus ("bekostigd",
"deels bekostigd" (redencode pd) of "niet bekostigd"), code_bekostigingstatus (ruwe DUO-redencode(s)),
reden_niet_bekostigd (leesbare toelichting, zie
BEKOSTIGINGSTATUS_CODES) en indicatie_herstelbaar (TRUE als de
redenen allemaal een te late aanlevering door de instelling zijn en dus
hersteld kunnen worden, FALSE bij een structurele reden, NA als de inschrijving wel
bekostigd is), plus het attribuut peiljaar (integer) dat aangeeft
voor welk bekostigingsjaar het bestand geldt. Gereed voor gebruik in
verrijk_met_bekostiging()
Examples
pad <- system.file("extdata/voorbeeld_vlpbek.csv", package = "staat1cho")
lees_bekostiging(pad)
Lees een VAKHAVW-bestand in
Description
Leest een semicolongescheiden VAKHAVW-bestand (DUO 1CHO-formaat) in, controleert de aanwezigheid van de vereiste kolommen en converteert cijferkolommen naar decimale waarden. DUO slaat cijfers op als gehele getallen vermenigvuldigd met 10 (bijv. 69 = 6.9).
Usage
lees_vakhawv(pad)
Arguments
pad |
Pad naar het semicolongescheiden VAKHAVW-bestand (UTF-8) |
Value
Een tibble met de ruwe vakcijferdata per student per vak,
gereed voor gebruik in verrijk_met_vakhawv()
Examples
pad <- system.file("extdata/voorbeeld_vakhawv.csv", package = "staat1cho")
vakhawv <- lees_vakhawv(pad)
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 geaggregeerd benchmarkrapport
Description
Aggregeert het indicatorenbestand per sector, opleidingsvorm, opleidingsniveau en instroomjaar. Berekent percentages voor de kernuitkomsten en voegt een totaalrij per jaar toe.
Usage
maak_benchmarkrapport(
indicatoren,
drempel = 30L,
min_cel = 5L,
niveau = attr(indicatoren, "niveau"),
peildatum = attr(indicatoren, "peildatum")
)
Arguments
indicatoren |
Tibble zoals gemaakt door |
drempel |
Minimale groepsgrootte. Groepen kleiner dan deze waarde
krijgen NA voor alle kolommen inclusief |
min_cel |
Minimale celgrootte voor percentages (zie hierboven). Standaard 5; 0 zet celonderdrukking uit. |
niveau |
Analyseniveau waarop |
peildatum |
Peildatum van de data ( |
Details
Onvolledige cohorten
Percentages worden berekend over de waarneembare rijen: studenten met
"Nog niet waarneembaar" (cohort te recent voor het meetvenster) tellen
niet mee in teller of noemer. Is niemand in een groep waarneembaar, dan is
het percentage NA.
Privacyonderdrukking
-
Primair: groepen met minder dan
drempelstudenten (standaard 30) krijgenNAvoor alle uitkomsten, inclusiefn. -
Secundair: is in een instroomjaar precies één groep primair onderdrukt, dan is die groep terug te rekenen uit de totaalrij min de zichtbare groepen. Daarom wordt dan ook de kleinste zichtbare groep in dat jaar onderdrukt.
-
Cellen: een percentage wordt
NAals de teller of het complement (noemer - teller) kleiner is danmin_cel(standaard 5), zodat bijvoorbeeld "0% uitval" in een groep niets over iedereen in die groep verraadt. Zetmin_cel = 0om dit uit te zetten. -
Secundair per cel: is in een instroomjaar precies één groep leeg voor een percentage, dan is dat percentage terug te rekenen uit de totaalrij. Dan wordt hetzelfde percentage ook leeggemaakt in de kleinste groep in dat jaar waar het nog zichtbaar is.
Percentages worden afgerond op hele procenten, gemiddelden op één decimaal.
De drempel van 30 is een eigen keuze van het project, geen voorgeschreven
norm. Laat een privacy officer of FG van de deelnemende instellingen
drempel en min_cel toetsen voordat rapporten gedeeld worden.
De kolom onderdrukt maakt zichtbaar welke rijen zijn onderdrukt
(primair of secundair) zonder iets te onthullen over de werkelijke omvang.
Peildatum
Elke rij krijgt de peildatum van de data: standaard 1 oktober van het
laatste inschrijvingsjaar (het attribuut peildatum dat
combineer_indicatoren() zet). Cijfers van eerdere cohorten kunnen bij een
latere peildatum veranderen, bijvoorbeeld als een student na een tussenjaar
terugkeert en dan niet meer als uitgevallen telt. Vergelijk daarom alleen
rapporten met dezelfde peildatum, en vermeld de peildatum bij elk gedeeld
cijfer.
Samenstelling instroom
Als het analysebestand vooropleiding en eerstejaars_ho bevat (zie
combineer_indicatoren()), geeft het rapport per groep het aandeel havo-,
vwo- en mbo-instromers en het aandeel eerstejaars HO. Onbekende waarden
tellen niet mee in de noemer. Verschillen in rendement en uitval tussen
instellingen hangen sterk samen met deze samenstelling.
Gebruik als validatiemiddel
CEDA kan met dit rapport controleren of de tool correct werkt:
-
Totalen vs. DUO-publicaties:
nin de totaalrij per instroomjaar moet overeenkomen met het aantal studenten dat DUO voor die instelling en dat jaar publiceert. Een grote afwijking wijst op een verwerkingsfout. -
Plausibele marges: uitvalpercentages buiten circa 5-40 % of rendement van 0 % zijn een signaal om de pipelinestap te controleren.
-
Reproduceerbaarheid: hetzelfde invoerbestand moet op elk moment identieke cijfers opleveren.
-
Optionele bestanden: als VLPBEK of VAKHAVW is geladen, moeten de bijbehorende kolommen (
pct_bekostigd,gem_eindcijfer) voor de meeste rijen gevuld zijn. Kolommen die volledig leeg zijn duiden op een koppelfout.
Value
Een tibble met kolommen peildatum, sector, opleidingsvorm,
opleidingsniveau, inschrijvingsjaar, onderdrukt, n,
pct_uitval_1jr, pct_uitval_3jr, pct_rendement_3jr,
pct_rendement_5jr, pct_rendement_8jr, pct_studiewissel_1jr,
pct_studiewissel_3jr, pct_int_student, gem_leeftijd_instroom,
plus optioneel pct_eerstejaars_ho, pct_vooropl_havo,
pct_vooropl_vwo, pct_vooropl_mbo, gem_eindcijfer,
gem_wiskundecijfer,
gem_aantal_vakken, pct_bekostigd, pct_hoofdinschrijving en
pct_herstelbaar (van de niet-bekostigde rijen: percentage waarvan de
reden een te late aanlevering is en dus hersteld kan worden, zie
BEKOSTIGINGSTATUS_CODES). Attributen: gegenereerd_op (POSIXct) en
metadata (lijst met peildatum, niveau, drempel, min_cel, laatste
inschrijvingsjaar, geladen optionele bestanden, packageversie en
tijdstip).
See Also
schrijf_benchmarkrapport() om het rapport met toelichting als
Excel-bestand op te slaan.
Examples
df <- tibble::tibble(
sector = "gezondheidszorg",
opleidingsvorm = "voltijd",
opleidingsniveau = "bachelor",
inschrijvingsjaar = 2022L,
uitval_1jr = factor("Na 1 jaar nog ingeschreven of diploma behaald"),
uitval_3jr = factor("Na 3 jaar nog ingeschreven of diploma behaald"),
rendement_3jr = factor("Geen diploma"),
rendement_5jr = factor("Geen diploma"),
rendement_8jr = factor("Geen diploma"),
int_student = "geen internationale student",
leeftijd_bij_instroom = 19L
)
maak_benchmarkrapport(df, drempel = 1L, niveau = "student")
Maak een bestand met het vroegst behaalde diploma per student (of inschrijving)
Description
Filtert het basisbestand op diplomasoorten die gelden als afgeronde opleiding en behoudt per sleutel alleen het eerste diploma op basis van diplomajaar.
Usage
maak_diploma_behaald(basisbestand, niveau = "student")
Arguments
basisbestand |
Tibble zoals gemaakt door |
niveau |
Analyseniveau: |
Value
Een tibble met één rij per student (bij niveau = "student") of per
student-opleidingcombinatie (bij niveau = "inschrijving"), met kolommen
voor de sleutel(s), jaar_eerste_diploma, verblijfsjaar_eerste_diploma
(verblijfsjaar aan de instelling resp. in de opleiding), diploma,
soort_diploma en opleidingscode_diploma (de opleiding waarin het
diploma behaald is). Gooit een fout bij dubbele sleutelcombinaties.
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, niveau = "student")
Arguments
basisbestand |
Tibble zoals gemaakt door |
soort_ho |
Character vector met toegestane waarden van
|
niveau |
Analyseniveau: |
Value
Een tibble met een rij per student (bij niveau = "student") of per
student-opleidingcombinatie (bij niveau = "inschrijving"), aangevuld met
kolom eerstejaar_instelling (= inschrijvingsjaar). Gooit een fout als er
dubbele sleutelcombinaties 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,
verblijfsjaar_actuele_opleiding_instelling = 1L,
inschrijvingsjaar = 2020L,
soort_diploma_instelling_label = NA_character_
)
maak_instroom_cohort(basis, "hbo")
Maak een synthetisch 1CHO-bestand met complete studieloopbanen
Description
Simuleert instroomcohorten van een fictieve hbo-instelling met vaste kansen op uitval, studiewissel en diplomering, in het kolomformaat van de 1cijferho-enriched output. Bedoeld voor demo's, de showcase en als referentie bij validatie: omdat per student bekend is wat er gebeurde, moet de pipeline die uitkomsten exact terugvinden.
Usage
maak_synthetische_1cho(
n_per_jaar = 200L,
jaren = 2012:2023,
p_uitval_1jr = 0.15,
p_uitval_later = 0.1,
p_wissel = 0.1,
seed = 1L
)
Arguments
n_per_jaar |
Aantal instromers per cohort |
jaren |
Integer vector met instroomjaren; het laatste jaar is ook het laatste inschrijvingsjaar in de data |
p_uitval_1jr, p_uitval_later, p_wissel |
Kansen, zie hierboven |
seed |
Seed voor reproduceerbaarheid |
Details
Per student wordt één loopbaan getrokken:
met kans
p_uitval_1jruitval na het eerste jaar;anders met kans
p_uitval_lateruitval na jaar 2 of 3;anders met kans
p_wisseleen wissel naar een andere opleiding in jaar 2, gevolgd door een diploma;anders een diploma na 4, 5 of 6 jaar (kansen 0,5 / 0,3 / 0,2). Een wisselaar doet er een jaar langer over.
Het diploma staat op de inschrijvingsrij van het laatste studiejaar, met
diplomajaar gelijk aan dat inschrijvingsjaar (dezelfde conventie als
de DUO-data). Loopbanen worden afgekapt na het laatste jaar in jaren.
Value
Een tibble met één rij per student per inschrijvingsjaar, klaar om
met readr::write_delim(x, pad, delim = ";", na = "") weg te schrijven en
in te lezen met maak_basisbestand(). Het attribuut waarheid bevat per
student persoonsgebonden_nummer, instroomjaar, uitval_na (jaar van
uitval of NA), diploma_na (studiejaar van diplomering of NA),
gewisseld (TRUE bij een wissel in jaar 2), vooropleiding (havo,
vwo, mbo, buitenlands of onbekend) en eerder_in_ho (TRUE als de
student twee jaar voor instroom al in het HO stond), zonder afkapping.
Examples
synth <- maak_synthetische_1cho(n_per_jaar = 20, jaren = 2018:2023)
head(attr(synth, "waarheid"))
pad <- tempfile(fileext = ".csv")
readr::write_delim(synth, pad, delim = ";", na = "")
basis <- maak_basisbestand(pad)
Sla een benchmarkrapport op als Excel-bestand
Description
Schrijft het rapport uit maak_benchmarkrapport() naar een .xlsx met
vier tabbladen: Rapport, Toelichting (per kolom, afgestemd op
analyseniveau en drempel), Validatie (controlepunten voor CEDA) en
Metadata (peildatum, niveau, drempel, packageversie, laatste
inschrijvingsjaar).
Vereist het package writexl.
Usage
schrijf_benchmarkrapport(rapport, pad)
Arguments
rapport |
Tibble zoals gemaakt door |
pad |
Pad van het uitvoerbestand ( |
Value
pad, onzichtbaar
Examples
df <- tibble::tibble(
sector = "gezondheidszorg", opleidingsvorm = "voltijd",
opleidingsniveau = "bachelor", inschrijvingsjaar = 2022L,
uitval_1jr = factor("Uitgevallen binnen 1 jaar"),
uitval_3jr = factor("Uitgevallen binnen 3 jaar"),
rendement_3jr = factor("Geen diploma"),
rendement_5jr = factor("Geen diploma"),
rendement_8jr = factor("Geen diploma"),
int_student = "geen internationale student",
leeftijd_bij_instroom = 19L
)
if (requireNamespace("writexl", quietly = TRUE)) {
rapport <- maak_benchmarkrapport(df, drempel = 1L, niveau = "student")
schrijf_benchmarkrapport(rapport, tempfile(fileext = ".xlsx"))
}
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()
}
Verrijk indicatoren met bekostigingsinformatie uit een VLPBEK-bestand
Description
Koppelt bekostigingsstatus per student per opleiding aan het
indicatorenbestand via persoonsgebonden_nummer en opleidingscode.
Wanneer een student meerdere BRD-regels heeft voor dezelfde opleiding
geldt: als ten minste een regel de status "bekostigd" of "deels bekostigd" heeft, is de student bekostigd voor die opleiding.
Usage
verrijk_met_bekostiging(indicatoren, bekostiging)
Arguments
indicatoren |
Tibble zoals gemaakt door |
bekostiging |
Tibble zoals gemaakt door |
Details
Een VLPBEK-bestand beschrijft de inschrijvingen van één bekostigingsjaar.
De koppeling legt dus de huidige bekostigingsstatus naast elk
instroomcohort; studenten die in dat jaar niet (meer) ingeschreven stonden
krijgen NA. De kolom bekostiging_jaar geeft aan op welk
inschrijvingsjaar de status betrekking heeft.
De functie meldt hoeveel rijen gekoppeld zijn en waarschuwt als dat minder
dan de helft is: dan gebruiken de bestanden verschillende persoonsnummers.
Dat is bij echte leveringen nu altijd zo, zie lees_bekostiging(). Het
attribuut koppeling bevat de aantallen.
Studenten zonder overeenkomst in het VLPBEK-bestand krijgen NA voor
indicatie_bekostigd en indicatie_hoofdinschrijving.
Value
De indicatoren-tibble uitgebreid met indicatie_bekostigd
(TRUE/FALSE/NA), indicatie_hoofdinschrijving (TRUE/FALSE/NA),
reden_niet_bekostigd (leesbare toelichting(en), NA als wel bekostigd)
, indicatie_herstelbaar (TRUE/FALSE/NA, zie
BEKOSTIGINGSTATUS_CODES) en bekostiging_jaar. Heeft een student meerdere BRD-regels met
verschillende redenen voor dezelfde opleiding, dan worden de unieke
redenen samengevoegd.
Examples
indicatoren <- tibble::tibble(
persoonsgebonden_nummer = c("1", "2", "3"),
opleidingscode = c("31001", "31002", "31003"),
inschrijvingsjaar = 2023L
)
bekostiging <- tibble::tibble(
persoonsgebonden_nummer = c("1", "2"),
opleidingscode = c("31001", "31002"),
inschrijvingsjaar = c(2023L, 2023L),
indicatie_hoofdinschrijving = c(TRUE, TRUE),
opleidingsvorm = c("voltijd", "voltijd"),
sector = c("gezondheidszorg", "economie"),
bekostigingsstatus = c("bekostigd", "niet bekostigd"),
code_bekostigingstatus = c(NA, "nf"),
reden_niet_bekostigd = c(NA, "Maximaal aantal bekostigde inschrijvingen overschreden."),
indicatie_herstelbaar = c(NA, FALSE)
)
verrijk_met_bekostiging(indicatoren, bekostiging)
Verrijk indicatoren met VAKHAVW-vooropleidingsgegevens
Description
Aggregeert vakcijferdata per student en koppelt ze aan het
indicatorenbestand via persoonsgebonden_nummer. Berekent per student:
Usage
verrijk_met_vakhawv(indicatoren, vakhawv)
Arguments
indicatoren |
Tibble zoals gemaakt door |
vakhawv |
Tibble zoals gemaakt door |
Details
-
vakhawv_gemiddeld_eindcijfer: hoogste gemiddelde eindcijfer van de cijferlijst (max over meerdere opleidingsjaren als die voorkomen) -
vakhawv_wiskundecijfer: gemiddeld centraal examencijfer voor wiskunde (alle vakken waarvan de afkorting begint met"wis") -
vakhawv_aantal_vakken: aantal unieke vakken op de cijferlijst
Studenten zonder overeenkomst in de VAKHAVW-data krijgen NA voor alle
drie de kolommen. De functie meldt welk deel van de VAKHAVW-studenten is
teruggevonden (attribuut koppeling) en waarschuwt onder de 10%. Een
lager aandeel dan 100% is normaal: VAKHAVW bevat ook studenten die voor
het eerste cohort in de data begonnen.
DUO vult het persoonsgebonden nummer in EV aan met spaties en in VAKHAVW met nullen; de koppeling negeert voorloopnullen. Werkt op zowel student- als inschrijvingsniveau: bij inschrijvingsniveau worden de vooropleidingsgegevens van een student voor elke opleiding herhaald.
Value
De indicatoren-tibble uitgebreid met de kolommen
vakhawv_gemiddeld_eindcijfer, vakhawv_wiskundecijfer en
vakhawv_aantal_vakken
Examples
indicatoren <- tibble::tibble(
persoonsgebonden_nummer = c("S001", "S002", "S003"),
inschrijvingsjaar = 2020L
)
vakhawv <- tibble::tibble(
persoonsgebonden_nummer = c("S001", "S001", "S002"),
afkorting_vak = c("ne", "wis", "ne"),
gemiddeld_cijfer_cijferlijst = c(7.2, 7.2, 6.5),
cijfer_eerste_centraal_examen = c(7.0, 6.5, 6.2),
cijfer_schoolexamen = c(7.5, 6.8, 6.8)
)
verrijk_met_vakhawv(indicatoren, vakhawv)