Microdata.no med støtte for løkker og bindinger

Lange skript med gjentakende struktur kan med fordel forenkles og systematiseres/generaliseres gjennom bruk av ny funksjonalitet for bindinger og løkker. Dette er nå mulig gjennom bruk av kommandoene let og for.

Bindinger

Bindinger er skript-lokale, navngitte størrelser som gir deg mulighet til å generalisere/automatisere skript. Bindinger defineres gjerne øverst i et skript gjennom kommandoen let, og kan peke til en numerisk verdi, en streng (tekst), et symbol, en binding eller kombinasjoner av disse.

Et symbol er et konkret objekt som man senere vil referere til, vanligvis en variabel. Det trenger ikke nødvendigvis være en eksisterende variabel, men kan settes inn i et uttrykk hvor variabelen skal genereres. Symboler skal ikke angis med fnutter slik som strenger.

Et typisk bruksområde for bindinger er ved referanser til årstall eller datoer i forbindelse med import av variabler, tilrettelegging av variabler, kjøring av statistikk etc. Da kan man opprette en binding til et gitt år der hvor det er relevant, og dersom man finner ut at man vil kjøre for et annet år, justerer man bare på verdien til bindingen i stedet for alle steder i skriptet hvor årstallet befinner seg. I skriptet bruker man tegnet $ etterfulgt av navnet på bindingen der hvor man vil peke til bindingen.

Eksempler på definering av bindinger:

Bruk help let for den fulle syntaksbeskrivelsen for bindinger.

Man kan også benytte funksjoner som opererer kun på bindinger, også kalt prosedyrer, på denne måten:

Bruk kommandoen help-procedure for å lese om hvilke andre prosedyrer som er tilgjengelige.

Det er mulig å sette sammen og kombinere flere bindinger til ett uttrykk gjennom å bruke tegnene ++. Dette tilsvarer å konkatenere verdier/tekst/symboler til ett samlet uttrykk. Merk at tall kombinert med tekst blir tekst. Eksempel:

Eksempel på bruk av bindinger:

I eksempelet over benyttes prosedyren date_fmt() . Dette er en svært nyttig prosedyre som genererer standard måletidspunktdatoer for import-kommandoer (på formen YYYY-MM-DD), og som kan brukes til å gjøre skriptet enda mer automatisert og strømlinjeformet. Eksempel:

Kommandoene over genererer følgende datoverdier:

  • 2021-01-01
  • 2021-10-01
  • 2021-10-20

Eksempler på hvordan generalisere datoer i et import-uttrykk:

tilsvarer

Det kan være lurt å tenke seg om ved bruk av inline-bindinger, da koden kan bli vanskeligere å lese ved overdreven bruk. Eventuelle feilmeldinger kan også bli vanskeligere å forholde seg til. En tommelfingerregel er at man definerer en ferdigkonkatenert binding gjennom let dersom denne brukes flere steder.

Merk at ++ har lavere presedens enn de matematiske operatorene + og -. Det betyr at uttrykket

er det samme som

Løkker

Løkker tar skrittet videre ved å la deg automatisere bruk av gjentakende kommandolinjer med lik struktur. F.eks. dersom du vil importere en variabel flere ganger med forskjellige måletidspunkt. Da kan du benytte kommandoen for i kombinasjon med in for å definere hvordan løkken skal itereres. Man kan enten definere et intervall gjennom bruk av et kolonntegn (:), eller du kan liste verdiene det skal itereres over. Det er mulig å bruke både heltall, tekst og symboler som iteratorer, og det er mulig å iterere over mer enn en iterator i en løkke. Iteratorer kan ses på som en binding som genererer et sett med verdier som går fra først til siste verdi i en løkke. Merk at iterator-bindinger er lokale slik at man kan bruke de samme navnene i ulike løkker. Også bindinger som defineres inni en løkke er lokale.

Eksempel på bruk av løkker:

Et typisk analyseeksempel der man importerer av et sett med variabler målt over flere år, for et tilfeldig utvalg av bosatte individer i en gitt aldergruppe:

Et annet eksempel der man lager tre datasett med lik struktur, og som henter ut forløpsdata målt over året 2018 for hhv. arbeidssøkere, uføre, og sosialhjelpsmottakere. Dette brukes til å finne antall dager i de ulike statusene (i løpet av 2018). Datasettene kobles sammen med hoveddatasettet «bosatte» for hvert trinn:

Nok et eksempel der man henter ut tverrsnittsdata over arbeidstid for alle arbeidstakere målt over alle månedene i 2018:

Komplett introduksjonsskript finner du her (kan limes inn i skriptvinduet i microdata.no og kjøres).

All informasjon på denne siden kan du også finne i brukermanualen.