Skip to main content

Restrukturere datasett fra wide- til long-format

Til statistikk og analyser i microdata.no brukes vanligvis datasett opprettet gjennom kommandoen import. Dette er datasett av typen «wide», hvor opplysninger om alle enheter i en populasjon struktureres horisontalt på variabelnivå. Kommandoen reshape-to-panel gjør det mulig å endre datastrukturen til long-format (panel-format), hvor opplysninger om hver enhet struktureres vertikalt på observasjons-/record-nivå.

Variabler som måles over flere tidspunkt og som man ønsker på long-/panel-format, må navngis gjennom reshape-to-panel med angitte prefiks som består av bokstavene (prefikset) fra den opprinnelige variabelen i wide-datasettet. Øvrige variabler som det ikke angis prefiks for, typisk opplysninger som bare måles én gang (kjønn, fødeland etc), defineres automatisk som faste opplysninger og verdiene for disse repeteres for alle undernivåer for hver enhet.

Skriptet nedenfor viser hvordan man bruker reshape-to-panel i praksis. Først lages det et vanlig datasett av typen wide, bestående av et 1% tilfeldig utvalg av alle som var registrert bosatt i Norge per 1/1 2018. I tillegg importeres variablene regstat (registerstatus), sivstand (sivilstatus) og lønn (årslønn) for årene 2018-2020, samt den faste opplysningen kjønn. Så brukes kommandoen reshape-to panel til å restrukturere datasettet til long-format (paneldata). Dataene vi vil ha på long-/panel-format angis gjennom å oppgi prefikset til settene med variabler (bokstavdelen forut for siffer som knyttes til årstall e.l.), i dette tilfellet regstat, sivstand og lønn. Kjønn er en fast opplysning, og vi trenger derfor ikke inkludere et variabelprefiks for denne i kommando-uttrykket. Det ferdige long-datasettet vil inkludere variabelen date@panel som inneholder verdien på undernivået til hver enkelt enhet. I dette tilfellet vil alle enheter ha undernivåene 18, 19 og 20 (altså tre undernivåer/observasjoner/records hver).

 require no.ssb.fdb:23 as db

//Lager først et vanlig wide-datasett bestående av et 1% utvalg av alle bosatte per 1/1 2018
create-dataset wide
import db/BEFOLKNING_STATUSKODE 2018-01-01 as regstat18
keep if regstat18 == '1'
sample 0.01 333
import db/BEFOLKNING_STATUSKODE 2019-01-01 as regstat19
import db/BEFOLKNING_STATUSKODE 2020-01-01 as regstat20
import db/SIVSTANDFDT_SIVSTAND 2018-01-01 as sivstand18
import db/SIVSTANDFDT_SIVSTAND 2019-01-01 as sivstand19
import db/SIVSTANDFDT_SIVSTAND 2020-01-01 as sivstand20
import db/BEFOLKNING_KJOENN as kjønn
import db/INNTEKT_WLONN 2018-01-01 as lønn18
import db/INNTEKT_WLONN 2019-01-01 as lønn19
import db/INNTEKT_WLONN 2020-01-01 as lønn20

//Kjører litt opptellinger og statistikk
tabulate regstat18, missing
tabulate regstat19, missing
tabulate regstat20, missing
tabulate sivstand18, missing
tabulate sivstand19, missing
tabulate sivstand20, missing
tabulate kjønn, missing

summarize lønn18 lønn19 lønn20

//Konverterer til long-format (paneldata)
reshape-to-panel regstat sivstand lønn

//Tester om det er samsvar med opptellingene på wide-datasettet
tabulate date@panel, missing

tabulate-panel regstat, missing
tabulate-panel sivstand, missing
tabulate-panel regstat sivstand, missing

tabulate-panel kjønn, missing
tabulate-panel regstat kjønn, missing
tabulate-panel sivstand kjønn, missing

summarize lønn
summarize-panel lønn