ggdatascience / gmjv-landelijk-format

GMJV landelijk format
3 stars 0 forks source link

Voorbeeld rapportage.qmd runt niet goed met trendbestand van 2022 #64

Closed SBorsboom closed 1 month ago

SBorsboom commented 1 month ago

We kunnen de voorbeeld rapportage uitdraaien met het "gewone 'databestand van 2022. We hebben daarna de trendsyntaxen gerund op het regionale bestand van 2022 en proberen dat in te lezen, dan krijgen we de volgende melding:

processing file: voorbeeld_rapportage.qmd |. | 2% [Instellingen] Error in !continue: ! invalid argument type Backtrace:

  1. global .main()
  2. execute(...)
    1. rmarkdown::render(...)
  3. knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
  4. knitr:::process_file(text, output) ...
    1. knitr:::call_block(x)
  5. knitr:::block_exec(params)
  6. knitr:::eng_r(options)
  7. knitr (local) evaluate(...)
  8. evaluate::evaluate(...)

Quitting from lines 38-214 [Instellingen] (voorbeeld_rapportage.qmd)

Execution halted

Als we alleen het blok vanaf: {r Instellingen} runnen , krijgen we een aantal foutmeldingen:

# Regionaal bestand inladen df_regio <- haven::read_spss(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal),

  • user_na =T) %>%
  • rename(Standaardisatiefactor_regio = Standaardisatiefactor,
  • Stratum_regio = Stratum,
  • Invulduur = duur) %>% # Standaardidatiefactor en andere indicatoren hernoemen. TODO weghalen na > trendsyntax?
  • labelled::user_na_to_na() Error in haven::read_spss():

Wij hebben zelf niet echt een idee hoe we dit kunnen oplossen

! Unknown extension .. Run rlang::last_trace() to see where the error occurred.

# Check of aantallen gelijk zijn. # NB. Alleen deelnemers met landelijke weegfactor zitten in landelijk bestand. if (sum(df_regio$Standaardisatiefactor_regio != 0, na.rm = T) != nrow(df %>% filter(GGDregio == params$regiocode))) {

  • print("Aantal deelnemers in regio is niet hetzelfde in beide bestanden, check data.")
  • } Error: object 'df_regio' not found`
pieterseinen commented 1 month ago

Bedankt voor het melden.

Wat er gebeurd is dat het niet lukt om het regiobestand in te lezen met de functie read_spss() hierdoor kan het dataframe voor de regio vervolgens niet gelezen worden. Het zou kunnen dat dit ligt aan het feit dat de verwijzing naar het SPSS-bestand niet goed gaat.

In quarto codeblokjes kan je (net als in standaard R) code ook per regel draaien. Dit doe je door ergens op een regel te klikken en dan CTRL+ENTER te drukken. Om te controleren of het aan de verwijzing naar het SPSS bestand ligt kan je het volgende doen.

1) voeg deze code bovenaan het codeblobk instellingen toe:

print(params$path_monitor_data_2022) #De map waar het databestand moet staan print(params$naam_monitor_data_2022_regionaal) #De naam van het databestand (incl. '.sav')

print(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal)) #De volledige verwijzing naar > het bestand

2) Draai deze code per regel met CTRL+ENTER en controleer de uitvoer in de console. Misschien zie je hier al wat er fout gaat & kan je de parameters daarop aanpassen. Let ook goed op of er een slash "/" tussen de map en de bestandnaam staan.

3) Voeg onderstaande code toe. Draai de regels met alle libraries erin en draai vervolgens onderstaande code:

read_spss(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal), user_na =T)

Ik ben benieuwd of dat lukt. Mogelijk krijg je een error dat het bestand niet bestaat. Dan weet heb je de oorzaak! Als je een andere melding krijgt hoor ik het graag!

SBorsboom commented 1 month ago

Dank voor de snelle reactie. Ik heb de eerste drie regels toegevoegd en krijg dan niet bijzonders te zien:

print(params$path_monitor_data_2022) #De map waar het databestand moet staan [1] "M:/Beleidsadvies en Onderzoek/Vertrouwelijk/Kwantitatief onderzoek/Gezondheidsmonitoren/monitor Jongvolwassenen/2022/Data/" print(params$naam_monitor_data_2022_regionaal) #De naam van het databestand (incl. '.sav') [1] "Trendbestand CGMJV2022 met indicatoren GMJV2024.sav" print(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal)) #De volledige verwijzing naar > het bestand [1] "M:/Beleidsadvies en Onderzoek/Vertrouwelijk/Kwantitatief onderzoek/Gezondheidsmonitoren/monitor Jongvolwassenen/2022/Data/Trendbestand CGMJV2022 met indicatoren GMJV2024.sav"

Daarna de libraries gerund en de laatste extra regel. Dan zie ik het volgende:

read_spss(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal), user_na =T)

A tibble: 2,019 × 354

AGOJB401 Respondentnummer Standaardisatiefactor_regio Stratum_regio AGLFB401 AGGSB401 AGGIB401 AGGIB403 AGGIB404

1 2022 10000012 20.6 20 2 [17 jaar] 2 [Vrouw] 8031 0 (NA) [Onb… 0 (NA) [On… 2 2022 10000013 20.6 20 1 [16 jaar] 2 [Vrouw] 8261 0 (NA) [Onb… 0 (NA) [On… 3 2022 10000014 24.3 22 5 [20 jaar] 2 [Vrouw] 8043 0 (NA) [Onb… 0 (NA) [On… 4 2022 10000041 34.0 19 1 [16 jaar] 1 [Man] 8023 0 (NA) [Onb… 0 (NA) [On… 5 2022 10000044 29.5 24 9 [24 jaar] 2 [Vrouw] 7416 0 (NA) [Onb… 0 (NA) [On… 6 2022 10000086 50.0 21 4 [19 jaar] 1 [Man] 8043 0 (NA) [Onb… 0 (NA) [On… 7 2022 10000103 29.5 24 7 [22 jaar] 2 [Vrouw] 7701 0 (NA) [Onb… 0 (NA) [On… 8 2022 10000148 24.3 22 4 [19 jaar] 2 [Vrouw] 8266 0 (NA) [Onb… 0 (NA) [On… 9 2022 10000155 29.5 24 7 [22 jaar] 2 [Vrouw] 7731 0 (NA) [Onb… 0 (NA) [On… 10 2022 10000203 29.5 24 10 [25 jaar] 2 [Vrouw] 8019 0 (NA) [Onb… 0 (NA) [On… # ℹ 2,009 more rows # ℹ 345 more variables: AGETB401 , AGETB401a , AGETB402 , AGETB402a , AGETB403 , # AGETB403a , AGOWB401 , AGOWB402 , AGOWB403 , AGWSB401 , AGWSB402 , # AGWSB403 , AGWSB404 , AGWSB405 , AGWSB406 , AGHHB401 , AGHHB402 , # FIIKB401 , FIIKB402 , FIIKB403 , GZGGB401 , LVTEB401 , LVTEB402 , # LVTEB403 , LVPKB401 , LVPKB402 , LVPKB403 , LVPKB404 , LVPKB405 , # LVPKB406 , LVSTB401 , LVSTB402 , LVSTB403 , LVSTB404 , LVSTB405 , … # ℹ Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names

Dat leek me allemaal goed, maar wanneer ik het hele blok run, krijg ik als eerste foutmelding: Error in rename(): ! Can't rename columns that don't exist. ✖ Column Standaardisatiefactor doesn't exist. Run rlang::last_trace() to see where the error occurred.

Komt dat omdat in het trendbestand al een rename is gedaan voor de standaardisatiefactor? Moet ik daar een stukje weghalen?

Verder krijg ik verderop weer de error:

Error: object 'df_regio' not found

pieterseinen commented 1 month ago

Je hebt gelijk. Het script probeert een variabele te renamen die niet meer bestaat. Als het goed is trekt de syntax alles gelijk en is de functie rename() dus niet meer nodig. We gaan dit nakijken & zullen dat morgen bevestigen + aanpassen in het script.

Bedankt voor het melden en vinden van het probleem :)

SBorsboom commented 1 month ago

Dat wacht ik dan even af, Hopelijk is dat dan ook de oplossing voor de andere error.

pieterseinen commented 1 month ago

Bij deze bevestigd :) Je kan de regel met rename() inderdaad gewoon verkorten. Invulduur zou nog wel renamed moeten worden (omdat die nog niet in de trendsyntax is verwerkt). Dus dan wordt het:

df_regio <- haven::read_spss(paste0(params$path_monitor_data_2022, params$naam_monitor_data_2022_regionaal), user_na =T) %>% rename(Invulduur = duur) %>% labelled::user_na_to_na()