Bilag 5: SAS-program /****************************************************************************************************************** FILNAVN : /data/702959/hbl2959/saml.sas PROGRAMMERET AF : Helle Bendix Lauritzen BRUGERNAVN : hbl2959 DATO : Thu Feb 5 11:40:16 2009 ------------------------------------------------------------------------------------------------------------------- options nocenter obs=max compress=yes mprint mlogic ps=max ls=max; *lav et shortcut til det fysiske bibliotek som ligger på lokaliteten: /akf/data/dataview/702959; libname d '/akf/data/dataview/702959'; libname eget '/data/702959/ymj2959'; libname cfalle '/data/702959/ymj2959/cfalledata'; *her laves makroer som kan fremkaldes naar som helst pnr og tilknyt renames til _temp som kan fremkaldes senere. Det andet makro bestemmer at pnr skal outputtes hvis det gaar op i 1000 -; *problemet er bare at pnr er en karaktervariabel. Du kan doebe et uendeligt antal makroer; *macro paa Leif og Kraens maade; %let opt=RENAME=(pnr=pnr_temp); %let testmodulus=WHERE=((mod(pnr,1000) eq 0)); *konstruktion af permanente datasaet for cfallen; /* data cfalle.cfalle1990; set d.cfalle1992; run; data cfalle.cfalle1991; set d.cfalle1992; run; data cfalle.cfalle1992; set d.cfalle1992; run; data cfalle.cfalle1993; set d.cfalle1993; run; data cfalle.cfalle1994; set d.cfalle1994; run; data cfalle.cfalle1995; set d.cfalle1995; run; data cfalle.cfalle1996; set d.cfalle1996; run; data cfalle.cfalle1997; set d.cfalle1997; run; data cfalle.cfalle1998; set d.cfalle1998; run; data cfalle.cfalle1999; set d.cfalle1999; run; data cfalle.cfalle2000; set d.cfalle2000; run; data cfalle.cfalle2001; set d.cfalle2001; run; data cfalle.cfalle2002; set d.cfalle2002; run; data cfalle.cfalle2003; set d.cfalle2003; run; data cfalle.cfalle2004; set d.cfalle2004; run; data cfalle.cfalle2005; set d.cfalle2005; run; *de efterfolgende makro skal ikke fremkaldes men saettes udenom et normalt datastep. Indenfor dette datastep fungerer alt normalt; *blot med makroen som kan kore kommandoen for en lang raekke aar i et step; *tilknytvariablen fikses for cfalledata til numerisk fra 1990-2003 - 2004 og 2005 er num i forvejen!!; %macro readdat (aar); data cfalle.macro&aar; set cfalle.cfalle&aar; nytilknyt=tilknyt*1; drop tilknyt; rename=(nytilknyt=tilknyt); run; %mend; %readdat (1990); %readdat (1991); %readdat (1992); %readdat (1993); %readdat (1994); %readdat (1993); %readdat (1994); %readdat (1995); %readdat (1996); %readdat (1997); %readdat (1998); %readdat (1999); %readdat (2000); %readdat (2001); %readdat (2002); %readdat (2003); *pstill2 variablen fikses for c-falledata i 2004 og 2005 fordi pstill2 her blot er kaldet pstill; */ /* %macro readdat (aar); data cfalle.pstill&aar; set cfalle.cfalle&aar; pstill2=pstill; drop pstill; run; %mend; %readdat (2004); %readdat (2005); *de nye c-falledata samles; data cfalle.samlet; set cfalle.macro1990 cfalle.macro1991 cfalle.macro1992 cfalle.macro1993 cfalle.macro1994 cfalle.macro1995 cfalle.macro1996 cfalle.macro1997 cfalle.macro1998 cfalle.macro1999 cfalle.macro2000 cfalle.macro2001 cfalle.macro2002 cfalle.macro2003 cfalle.pstill2004 cfalle.pstill2005; run; */ /* *tjek af hvor mange individer der er i cfalledata; proc sort data=cfalle.samlet; by pnr aar; run; data test; set cfalle.samlet; by pnr aar; if first.pnr then nypnr=pnr; else nypnr='.'; run; proc print data=test; var nypnr; where nypnr ne '.'; run; */ /* *det samme gøres for grunddata - for tilknyt og pstill og pnr; %macro readdat (aar); data grund&aar; set d.grund&aar; nytilknyt=tilknyt*1; nypnr=pnr*1; drop tilknyt pnr; rename=(nytilknyt=tilknyt); run; %mend; %readdat (1990); %readdat (1991); %readdat (1992); %readdat (1993); %readdat (1994); %readdat (1993); %readdat (1994); %readdat (1995); %readdat (1996); %readdat (1997); %readdat (1998); %readdat (1999); %readdat (2000); %readdat (2001); %readdat (2002); %readdat (2003); %macro readdat (aar); data pstill&aar; set d.grund&aar; pstill2=pstill; nypnr=pnr*1; drop pstill pnr; run; %mend; %readdat (2004); %readdat (2005); data eget.samlet; set grund1990 grund1991 grund1992 grund1993 grund1994 grund1995 grund1996 grund1997 grund1998 grund1999 grund2000 grund2001 grund2002 grund2003 pstill2004 pstill2005; run; */ /* *følgende kommando fortæller at de 1946820 observationer i data svarer til 348922 individer; data test; set eget.samlet; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr; where pnr ne .; run; */ /* *kommando til at udvælge en stikprove.. her får jeg eksempelvis alle de personer hvis nypnr går op i 1000 i årene 1990 til 2005; IF mod(pnr,1000) eq 0; run; */ /* *************************************************************en række registreringer og retainfunktioner;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; proc sort data=eget.samlet; by nypnr; run; *taller som skal vise om kvindernes ophold i danmark er ubrudt; data pnr_ubrudt; set eget.samlet(keep=nypnr aar); by nypnr aar; retain taller forste_aar last_aar; if first.nypnr then do; taller=0; forste_aar=aar; end; *herefter er talleren = forste aar + 1; taller=taller+1; *men hvis det er sidste gang at personen optræder i data så skal last_aar være = årstal og hvis taller er = diff mellem sidste og første år + 1 da skal værdien af taller outputtes; *værdien svarer til hvor mange år hver enkelt person er i data; if last.nypnr then do; last_aar=aar; if taller = (last_aar-forste_aar+1) then output; end; run; proc sort data=pnr_ubrudt; by nypnr; run; proc print data=pnr_ubrudt(obs=100); var nypnr aar; run; *herefter merges information om forlob - kun de forlob uden brud inkluderes i eget.samlet_ubrud; data eget.samlet_ubrud; merge eget.samlet(in=a) pnr_ubrudt(in=b drop=aar); by nypnr; if b; run; proc sort data=eget.samlet_ubrud; by nypnr aar; run; data cfalle.pnr; set cfalle.samlet; *pnrX er lig med mine kvinders kildevariabel i cfalledata - laves til nypnr saa labelnavnet er ens i de to datasaet som skal merges; nypnr=pnrX*1; run; proc sort data=cfalle.pnr; by nypnr pnr aar; run; *det to datasaet merges sammen og imens droppes en masse variable fra cfalle data. dem som bibeholdes renames så de ikke overskriver variablene med; *samme navn hos hovedpersonerne; data eget.alle; merge eget.samlet_ubrud cfalle.pnr (drop=adrdto almudd ansxfrem antb00 antb01 antb02 antb03 antb04 antb05 antb06 antb07 antb08 antb09 antb10 antb11 antb12 antb13 antb14 antb15 antb16 antb17 arblhu atpar beludd beskst beskst02 bopikom civdto civst dfam ekudd erhver fodregko grada hfafgtp htype igfsp igudd koejd kom lbnr modtkod slartu slon socbist socio socio02 startk94 statkode still vararb vare varf varfod varsyg vart varudd varudf aar cfalleX cnr forskat iguddkom pnrX pnr rename=(alder=alder_falle brutto=brutto_falle ieland=ieland_falle hffsp=hffsp_falle hfkilde=hfkilde_falle ietype=ietype_falle koen=koen_falle pstill2=pstill2_falle tilknyt=tilknyt_falle cfalle=pnr_falle inddto=inddto_falle cstatus=cstatus_falle)); by nypnr; run; *Definition af pstart og pslut paa mine hovedpersoner; proc sort data=eget.alle; by nypnr aar; run; data pstart; set eget.alle; by nypnr aar; if nypnr ne lag(nypnr) then pstart = 1; else pstart = 0; run; proc sort data=pstart; by nypnr descending aar; run; data pslut; set pstart; if nypnr ne lag (nypnr) then pslut=1; else pslut=0; run; proc sort data=pslut; by nypnr aar; run; *alderen retaines ved ankomst; data eget.ankomstalder; set pslut; by nypnr; retain ankomstalder; if pstart=1 then ankomstalder=alder; run; */ ***************************************************omdannelse fra karakter til numerisk for en raekke variable;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; /* *samtidig droppes en raekke variable som ikke skal med videre; data eget.num; set eget.ankomstalder (drop=adrdto almudd ansxfrem arblhu atpar beludd beskst beskst02 cfalle civdto dfam ekudd erhver fodregko forskat grada hfafgtp htype iguddkom inddto inudlan koejd modtkod slartu slon socbist socio socio02 startk94 still vararb vare varf varsyg vart varudd varudf); nyalder=alder +0; nyalder_falle=alder_falle +0; nycnr=cnr +0; nycstatus=cstatus +0; nycstatus_falle=cstatus_falle +0; nyhanddto=handdto +0; nyhffsp=hffsp +0; nyhffsp_falle=hffsp_falle +0; nyhfkilde=hfkilde +0; nyhfkilde_falle=hfkilde_falle +0; nyieland=ieland +0; nyieland_falle=ieland_falle +0; nyietype=ietype +0; nyietype_falle=ietype_falle +0; nyigfsp=igfsp +0; nyigudd=igudd +0; nyindud=indud +0; nyinddto_falle=inddto_falle +0; nykoen=koen +0; nykoen_falle=koen_falle +0; nykom=kom +0; nylbnr=lbnr +0; nypstill2=pstill2 +0; nypstill2_falle=pstill2_falle +0; nystatkode=statkode +0; nyaar=aar +0; nyankomstalder=ankomstalder +0; nypnr_falle=pnr_falle +0; run; data eget.nynum (drop=alder alder_falle cnr cstatus cstatus_falle handdto hffsp hffsp_falle hfkilde hfkilde_falle igfsp indud ieland ieland_falle ietype ietype_falle igudd inddto_falle koen koen_falle kom lbnr pstill2 pstill2_falle statkode aar ankomstalder pnr_falle rename=(nyalder=alder nyalder_falle=alder_falle nycnr=cnr nycstatus=cstatus nycstatus_falle=cstatus_falle nyhanddto=handdto nyhffsp=hffsp nyhffsp_falle=hffsp_falle nyhfkilde=hfkilde nyhfkilde_falle=hfkilde_falle nyigfsp=igfsp nyindud=indud nyieland=ieland nyieland_falle=ieland_falle nyietype=ietype nyietype_falle=ietype_falle nyigudd=igudd nyinddto_falle=inddto_falle nykoen=koen nykoen_falle=koen_falle nykom=kom nylbnr=lbnr nypstill2=pstill2 nypstill2_falle=pstill2_falle nystatkode=statkode nyaar=aar nyankomstalder=ankomstalder nypnr_falle=pnr_falle)); set eget.num; run; proc sort data=eget.nynum; by nypnr aar; run; */ *******************************************************************rekodning af en række variable;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; /* *arbejdsmarkedstilknytning for hovedperson konstrueres paa baggrund af pstill2 og en indikator for barselsperiode - personer med en missing pstill2 skaeres fra; data eget.stilling; set eget.nynum; *beskæftiget på højt niveau; if (pstill2=31) or (pstill2=32) or (pstill2=33) then stilling=1; *beskæftiget på mellemniveau; if (pstill2=34) or (pstill2=35) then stilling=2; *beskæftiget på lavt niveau. 45 er personer som er beskæftiget uden løn; if (pstill2=36) or (pstill2=37) or (pstill2=45) then stilling=3; *beskæftiget som arbejdsgiver og selvstændig; if (pstill2=11) or (pstill2=12) or (pstill2=13) or (pstill2=14) or (pstill2=19) or (pstill2=20) then stilling=4; *arbejdsløs i uge 48; if (pstill2=40) then stilling=5; *udenfor arbejdsstyrken - kode 90 incl orlov, personer midlertidigt udenfor arbejdsstyrken, personer på; *introudd og ydelse samt kontanthjælp; if (pstill2=90) or (pstill2=01) or (pstill2=02) or (pstill2=03) or (pstill2=04) or (pstill2=05) or (pstill2=71) or (pstill2=72) or (pstill2=73) or (pstill2=74) or (pstill2=75) or (pstill2=76) or (pstill2=77) or (pstill2=41) or (pstill2=42) or (pstill2=43) or (pstill2=46) or (pstill2=47) or (pstill2=48) or (pstill2=49) or (pstill2=50) or (pstill2=51) or (pstill2=52) or (pstill2=55) or (pstill2=97) or (pstill2=98) or (pstill2=95) then stilling=6; *under uddannelse; if (pstill2=91) then stilling=7; *pensionister, børn og unge; *de bliver sorteret fra senere i det step hvor alderen begrænses.. men tjek via krydstabel om der er nogle tilbage med pstill2; *92, 93, 94 eller 96; if (pstill2=92) or (pstill2=93) or (pstill2=94) or (pstill2=96) then stilling=8; *barsel mere end 95 dage; if (varfod ge 95) then stilling=9; if pstill2=. then delete; run; */ /* data test; set eget.stilling; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr; where pnr ne .; run; proc freq data=eget.stilling; tables stilling pstill2; run; proc print data=eget.stilling (obs=10000); var nypnr pnr_falle pstill2 pstill2_falle aar brutto alder; run; */ *arbejdsmarkedstilknytning for c-fallen; /* data eget.stilling_falle; set eget.stilling; *beskæftiget på højt niveau; if (pstill2_falle=31) or (pstill2_falle=32) or (pstill2_falle=33) then stilling_falle=1; *beskæftiget på mellemniveau; if (pstill2_falle=34) or (pstill2_falle=35) then stilling_falle=2; *beskæftiget på lavt niveau. 45 er personer som er beskæftiget uden løn; if (pstill2_falle=36) or (pstill2_falle=37) or (pstill2_falle=45) then stilling_falle=3; *beskæftiget som arbejdsgiver og selvstændig; if (pstill2_falle=11) or (pstill2_falle=12) or (pstill2_falle=13) or (pstill2_falle=14) or (pstill2_falle=19) or (pstill2_falle=20) then stilling_falle=4; *arbejdsløs i uge 48; if (pstill2_falle=40) then stilling_falle=5; *udenfor arbejdsstyrken - kode 90 incl orlov, personer midlertidigt udenfor arbejdsstyrken, personer på; *introudd og ydelse samt kontanthjælp; if (pstill2_falle=90) or (pstill2_falle=01) or (pstill2_falle=02) or (pstill2_falle=03) or (pstill2_falle=04) or (pstill2_falle=05) or (pstill2_falle=71) or (pstill2_falle=72) or (pstill2_falle=73) or (pstill2_falle=74) or (pstill2_falle=75) or (pstill2_falle=76) or (pstill2_falle=77) or (pstill2_falle=41) or (pstill2_falle=42) or (pstill2_falle=43) or (pstill2_falle=46) or (pstill2_falle=47) or (pstill2_falle=48) or (pstill2_falle=49) or (pstill2_falle=50) or (pstill2_falle=51) or (pstill2_falle=52) or (pstill2_falle=55) or (pstill2_falle=97) or (pstill2_falle=98) or (pstill2_falle=95) then stilling_falle=6; *under uddannelse; if (pstill2_falle=91) then stilling_falle=7; *pensionister, børn og unge; if (pstill2_falle=92) or (pstill2_falle=93) or (pstill2_falle=94) or (pstill2_falle=96) then stilling_falle=8; run; proc sort data=eget.stilling_falle; by nypnr aar; run; */ *nye aldersvariable; /* data alderny; set eget.stilling_falle; by nypnr; if (alder le 022) then alderny=1; if ((alder ge 023) and (alder le 24)) then alderny=2; if ((alder ge 025) and (alder le 29)) then alderny=3; if ((alder ge 030) and (alder le 34)) then alderny=4; if ((alder ge 035) and (alder le 39)) then alderny=5; if ((alder ge 040) and (alder le 44)) then alderny=6; if ((alder ge 045) and (alder le 49)) then alderny=7; if ((alder ge 050) and (alder le 54)) then alderny=8; if ((alder ge 055) and (alder le 59)) then alderny=9; if ((alder ge 060) and (alder le 64)) then alderny=10; if (alder ge 065) then alderny=11; run; data alder_falle; set alderny; by nypnr; if (alder_falle le 022) then alder_falleny=1; if ((alder_falle ge 023) and (alder_falle le 24)) then alder_falleny=2; if ((alder_falle ge 025) and (alder_falle le 29)) then alder_falleny=3; if ((alder_falle ge 030) and (alder_falle le 34)) then alder_falleny=4; if ((alder_falle ge 035) and (alder_falle le 39)) then alder_falleny=5; if ((alder_falle ge 040) and (alder_falle le 44)) then alder_falleny=6; if ((alder_falle ge 045) and (alder_falle le 49)) then alder_falleny=7; if ((alder_falle ge 050) and (alder_falle le 54)) then alder_falleny=8; if ((alder_falle ge 055) and (alder_falle le 59)) then alder_falleny=9; if ((alder_falle ge 060) and (alder_falle le 64)) then alder_falleny=10; if (alder_falle ge 065) then alder_falleny=11; run; data age; set alder_falle; by nypnr; age=0; if (alder le 022) then age=1; if ((alder ge 023) and (alder le 29)) then age=2; if ((alder ge 030) and (alder le 39)) then age=3; if ((alder ge 040) and (alder le 49)) then age=4; if ((alder ge 050) and (alder le 59)) then age=5; if (alder ge 060) then age=6; run; data age_falle; set age; by nypnr; age_falle=0; if (alder_falle le 022) then age_falle=1; if ((alder_falle ge 023) and (alder_falle le 29)) then age_falle=2; if ((alder_falle ge 030) and (alder_falle le 39)) then age_falle=3; if ((alder_falle ge 040) and (alder_falle le 49)) then age_falle=4; if ((alder_falle ge 050) and (alder_falle le 59)) then age_falle=5; if (alder_falle ge 060) then age_falle=6; run; *ankomstaar for hovedperson; data ankomstaar; set age_falle; by nypnr; ankomstaar=0; if ((handdto ge 19900101) and (handdto le 19901231)) then ankomstaar=1990; if ((handdto ge 19910101) and (handdto le 19911231)) then ankomstaar=1991; if ((handdto ge 19920101) and (handdto le 19921231)) then ankomstaar=1992; if ((handdto ge 19930101) and (handdto le 19931231)) then ankomstaar=1993; if ((handdto ge 19940101) and (handdto le 19941231)) then ankomstaar=1994; if ((handdto ge 19950101) and (handdto le 19951231)) then ankomstaar=1995; if ((handdto ge 19960101) and (handdto le 19961231)) then ankomstaar=1996; if ((handdto ge 19970101) and (handdto le 19971231)) then ankomstaar=1997; if ((handdto ge 19980101) and (handdto le 19981231)) then ankomstaar=1998; if ((handdto ge 19990101) and (handdto le 19991231)) then ankomstaar=1999; if ((handdto ge 20000101) and (handdto le 20001231)) then ankomstaar=2000; if ((handdto ge 20010101) and (handdto le 20011231)) then ankomstaar=2001; if ((handdto ge 20020101) and (handdto le 20021231)) then ankomstaar=2002; if ((handdto ge 20030101) and (handdto le 20031231)) then ankomstaar=2003; if ((handdto ge 20040101) and (handdto le 20041231)) then ankomstaar=2004; if ((handdto ge 20050101) and (handdto le 20051231)) then ankomstaar=2005; run; *der laves to kohorter - en med ankomst foer 1999 og en med ankomst efter; data kohorte; set ankomstaar; by nypnr; kohorte=0; if ((ankomstaar ge 1990) and (ankomstaar le 1998)) then kohorte=1; if ((ankomstaar ge 1999) and (ankomstaar le 2001)) then kohorte=2; run; *hojeste fuldforte uddannelse; data uddannelse; set kohorte; by nypnr; uddannelse = 0; if (hffsp ge 50000000) and (hffsp le 60906525) then uddannelse = 1; if (hffsp ge 65000000) and (hffsp le 70900090) then uddannelse = 2; run; *c-fallens hojest fuldforte uddannelse; data uddannelse_falle; set uddannelse; by nypnr; uddannelse_falle=0; if (hffsp_falle ge 10018010) and (hffsp_falle le 10091030) then uddannelse_falle=1; if (hffsp_falle ge 15100510) and (hffsp_falle le 17101010) then uddannelse_falle=2; if (hffsp_falle ge 20150090) and (hffsp_falle le 20182005) then uddannelse_falle=3; if (hffsp_falle ge 25390010) and (hffsp_falle le 25590520) then uddannelse_falle=4; if (hffsp_falle ge 30390310) and (hffsp_falle le 35979730) then uddannelse_falle=5; if (hffsp_falle ge 39200090) and (hffsp_falle le 39951010) then uddannelse_falle=6; if (hffsp_falle ge 40201030) and (hffsp_falle le 40952030) then uddannelse_falle=7; if (hffsp_falle ge 50100010) and (hffsp_falle le 60905510) then uddannelse_falle=8; if (hffsp_falle ge 65200090) and (hffsp_falle le 70900085) then uddannelse_falle=9; run; *nye born; data eget.born; set uddannelse_falle; spadborn = antb00 + antb01; born = antb02 + antb03 + antb04 + antb05 + antb06 + antb07 + antb08 + antb09 + antb10 + antb11 + antb12; teen = antb13 + antb14 + antb15 + antb16 + antb17; drop antb00 antb01 antb02 antb03 antb04 antb05 antb06 antb07 antb08 antb09 antb10 antb11 antb12 antb13 antb14 antb15 antb16 antb17; run; */ *oprindelsesland; /* data eget.oprindelse; set eget.born; by nypnr; if (ieland eq 5100) or (ieland eq 5115) then oprindelse=10; if (ieland eq 5101) then oprindelse=15; if (ieland eq 5902) then oprindelse=20; if (ieland eq 5104) or (ieland eq 5108) or (ieland eq 5111) or (ieland eq 5120) or (ieland eq 5126) or (ieland eq 5130) or (ieland eq 5134) or (ieland eq 5140) or (ieland eq 5142) or (ieland eq 5150) or (ieland eq 5156) or (ieland eq 5164) or (ieland eq 5170) or (ieland eq 5180) or (ieland eq 5182) then oprindelse=30; if (ieland eq 5172) or (ieland eq 5422) or (ieland eq 5708) or (ieland eq 5710) or (ieland eq 5714) or (ieland eq 5716) or (ieland eq 5718) or (ieland eq 5720) or (ieland eq 5722) or (ieland eq 5724) then oprindelse =35; if (ieland eq 5105) or (ieland eq 5106) or (ieland eq 5107) or (ieland eq 5109) or (ieland eq 5110) or (ieland eq 5122) or (ieland eq 5124) or (ieland eq 5128) or (ieland eq 5129) or (ieland eq 5152) or (ieland eq 5153) or (ieland eq 5154) or (ieland eq 5158) or (ieland eq 5159) or (ieland eq 5160) or (ieland eq 5162) or (ieland eq 5174) or (ieland eq 5184) or (ieland eq 5199) or (ieland eq 5607) or (ieland eq 5609) or (ieland eq 5611) or (ieland eq 5700) or (ieland eq 5704) or (ieland eq 5706) or (ieland eq 5712) or (ieland eq 5750) or (ieland eq 5752) or (ieland eq 5754) or (ieland eq 5756) or (ieland eq 5758) or (ieland eq 5776) or (ieland eq 5778) or (ieland eq 5151) then oprindelse =40; if (ieland eq 5202) or (ieland eq 5204) or (ieland eq 5207) or (ieland eq 5213) or (ieland eq 5214) or (ieland eq 5215) or (ieland eq 5216) or (ieland eq 5222) or (ieland eq 5228) or (ieland eq 5230) or (ieland eq 5231) or (ieland eq 5232) or (ieland eq 5233) or (ieland eq 5234) or (ieland eq 5235) or (ieland eq 5236) or (ieland eq 5238) or (ieland eq 5240) or (ieland eq 5242) or (ieland eq 5243) or (ieland eq 5244) or (ieland eq 5245) or (ieland eq 5246) or (ieland eq 5247) or (ieland eq 5253) or (ieland eq 5255) or (ieland eq 5256) or (ieland eq 5258) or (ieland eq 5259) or (ieland eq 5262) or (ieland eq 5264) or (ieland eq 5266) or (ieland eq 5268) or (ieland eq 5269) or (ieland eq 5276) or (ieland eq 5277) or (ieland eq 5278) or (ieland eq 5279) or (ieland eq 5281) or (ieland eq 5282) or (ieland eq 5283) or (ieland eq 5284) or (ieland eq 5285) or (ieland eq 5286) or (ieland eq 5287) or (ieland eq 5288) or (ieland eq 5289) or (ieland eq 5292) or (ieland eq 5293) or (ieland eq 5294) or (ieland eq 5295) or (ieland eq 5296) or (ieland eq 5297) or (ieland eq 5298) or (ieland eq 5299) or (ieland eq 5525) then oprindelse =45; if (ieland eq 5314) or (ieland eq 5390) or (ieland eq 5397) or (ieland eq 5399) then oprindelse =50; if (ieland eq 5301) or (ieland eq 5302) or (ieland eq 5303) or (ieland eq 5304) or (ieland eq 5305) or (ieland eq 5306) or (ieland eq 5307) or (ieland eq 5308) or (ieland eq 5309) or (ieland eq 5311) or (ieland eq 5316) or (ieland eq 5318) or (ieland eq 5322) or (ieland eq 5324) or (ieland eq 5325) or (ieland eq 5326) or (ieland eq 5328) or (ieland eq 5336) or (ieland eq 5338) or (ieland eq 5339) or (ieland eq 5342) or (ieland eq 5344) or (ieland eq 5345) or (ieland eq 5346) or (ieland eq 5347) or (ieland eq 5348) or (ieland eq 5352) or (ieland eq 5353) or (ieland eq 5354) or (ieland eq 5356) or (ieland eq 5358) or (ieland eq 5364) or (ieland eq 5366) or (ieland eq 5372) or (ieland eq 5374) or (ieland eq 5376) or (ieland eq 5392) or (ieland eq 5394) or (ieland eq 5395) or (ieland eq 5398) or (ieland eq 5526) or (ieland eq 5527) or (ieland eq 5528) or (ieland eq 5529) or (ieland eq 5530) or (ieland eq 5625) then oprindelse = 55; if (ieland eq 5444) then oprindelse = 60; if (ieland eq 5404) or (ieland eq 5408) or (ieland eq 5410) or (ieland eq 5412) or (ieland eq 5414) or (ieland eq 5416) or (ieland eq 5418) or (ieland eq 5424) or (ieland eq 5428) or (ieland eq 5432) or (ieland eq 5434) or (ieland eq 5448) or (ieland eq 5452) or (ieland eq 5454) or (ieland eq 5457) or (ieland eq 5458) or (ieland eq 5459) or (ieland eq 5464) or (ieland eq 5466) or (ieland eq 5468) or (ieland eq 5471) or (ieland eq 5472) or (ieland eq 5473) or (ieland eq 5474) or (ieland eq 5482) or (ieland eq 5484) or (ieland eq 5488) or (ieland eq 5492) or (ieland eq 5493) or (ieland eq 5494) or (ieland eq 5498) or (ieland eq 5499) or (ieland eq 5533) then oprindelse = 65; if (ieland eq 5502) or (ieland eq 5514) then oprindelse = 70; if (ieland eq 5274) or (ieland eq 5275) or (ieland eq 5505) or (ieland eq 5506) or (ieland eq 5508) or (ieland eq 5522) or (ieland eq 5534) or (ieland eq 5599) or (ieland eq 5623) then oprindelse = 75; if (ieland eq 5103) then oprindelse = 80; if (ieland eq 5000) or (ieland eq 5001) or (ieland eq 5102) or (ieland eq 5116) or (ieland eq 5132) or (ieland eq 5143) or (ieland eq 5186) or (ieland eq 5248) or (ieland eq 5290) or (ieland eq 5367) or (ieland eq 5476) or (ieland eq 5800) or (ieland eq 5999) then oprindelse = 85; if (ieland eq 5406) or (ieland eq 5403) or (ieland eq 5496) or (ieland eq 5436) or (ieland eq 5438) or (ieland eq 5272) or (ieland eq 5442) or (ieland eq 5446) or (ieland eq 5456) or (ieland eq 5478) or (ieland eq 5486) or (ieland eq 5402) or (ieland eq 5487) then oprindelse = 90; if ieland = . then delete; run; data eget.oprindelse_falle; set eget.oprindelse; by nypnr; if (ieland_falle eq 5100) or (ieland_falle eq 5115) then oprindelse_falle=10; if (ieland_falle eq 5101) then oprindelse_falle=15; if (ieland_falle eq 5902) then oprindelse_falle=20; if (ieland_falle eq 5104) or (ieland_falle eq 5108) or (ieland_falle eq 5111) or (ieland_falle eq 5120) or (ieland_falle eq 5126) or (ieland_falle eq 5130) or (ieland_falle eq 5134) or (ieland_falle eq 5140) or (ieland_falle eq 5142) or (ieland_falle eq 5150) or (ieland_falle eq 5156) or (ieland_falle eq 5164) or (ieland_falle eq 5170) or (ieland_falle eq 5180) or (ieland_falle eq 5182) then oprindelse_falle=30; if (ieland_falle eq 5172) or (ieland_falle eq 5422) or (ieland_falle eq 5708) or (ieland_falle eq 5710) or (ieland_falle eq 5714) or (ieland_falle eq 5716) or (ieland_falle eq 5718) or (ieland_falle eq 5720) or (ieland_falle eq 5722) or (ieland_falle eq 5724) then oprindelse_falle=35; if (ieland_falle eq 5105) or (ieland_falle eq 5106) or (ieland_falle eq 5107) or (ieland_falle eq 5109) or (ieland_falle eq 5110) or (ieland_falle eq 5122) or (ieland_falle eq 5124) or (ieland_falle eq 5128) or (ieland_falle eq 5129) or (ieland_falle eq 5152) or (ieland_falle eq 5153) or (ieland_falle eq 5154) or (ieland_falle eq 5158) or (ieland_falle eq 5159) or (ieland_falle eq 5160) or (ieland_falle eq 5162) or (ieland_falle eq 5174) or (ieland_falle eq 5184) or (ieland_falle eq 5199) or (ieland_falle eq 5607) or (ieland_falle eq 5609) or (ieland_falle eq 5611) or (ieland_falle eq 5700) or (ieland_falle eq 5704) or (ieland_falle eq 5706) or (ieland_falle eq 5712) or (ieland_falle eq 5750) or (ieland_falle eq 5752) or (ieland_falle eq 5754) or (ieland_falle eq 5756) or (ieland_falle eq 5758) or (ieland_falle eq 5776) or (ieland_falle eq 5778) or (ieland_falle eq 5151) then oprindelse_falle=40; if (ieland_falle eq 5202) or (ieland_falle eq 5204) or (ieland_falle eq 5207) or (ieland_falle eq 5213) or (ieland_falle eq 5214) or (ieland_falle eq 5215) or (ieland_falle eq 5216) or (ieland_falle eq 5222) or (ieland_falle eq 5228) or (ieland_falle eq 5230) or (ieland_falle eq 5231) or (ieland_falle eq 5232) or (ieland_falle eq 5233) or (ieland_falle eq 5234) or (ieland_falle eq 5235) or (ieland_falle eq 5236) or (ieland_falle eq 5238) or (ieland_falle eq 5240) or (ieland_falle eq 5242) or (ieland_falle eq 5243) or (ieland_falle eq 5244) or (ieland_falle eq 5245) or (ieland_falle eq 5246) or (ieland_falle eq 5247) or (ieland_falle eq 5253) or (ieland_falle eq 5255) or (ieland_falle eq 5256) or (ieland_falle eq 5258) or (ieland_falle eq 5259) or (ieland_falle eq 5262) or (ieland_falle eq 5264) or (ieland_falle eq 5266) or (ieland_falle eq 5268) or (ieland_falle eq 5269) or (ieland_falle eq 5272) or (ieland_falle eq 5276) or (ieland_falle eq 5277) or (ieland_falle eq 5278) or (ieland_falle eq 5279) or (ieland_falle eq 5281) or (ieland_falle eq 5282) or (ieland_falle eq 5283) or (ieland_falle eq 5284) or (ieland_falle eq 5285) or (ieland_falle eq 5286) or (ieland_falle eq 5287) or (ieland_falle eq 5288) or (ieland_falle eq 5289) or (ieland_falle eq 5292) or (ieland_falle eq 5293) or (ieland_falle eq 5294) or (ieland_falle eq 5295) or (ieland_falle eq 5296) or (ieland_falle eq 5297) or (ieland_falle eq 5298) or (ieland_falle eq 5299) or (ieland_falle eq 5525) then oprindelse_falle=45; if (ieland_falle eq 5314) or (ieland_falle eq 5390) or (ieland_falle eq 5397) or (ieland_falle eq 5399) then oprindelse_falle=50; if (ieland_falle eq 5301) or (ieland_falle eq 5302) or (ieland_falle eq 5303) or (ieland_falle eq 5304) or (ieland_falle eq 5305) or (ieland_falle eq 5306) or (ieland_falle eq 5307) or (ieland_falle eq 5308) or (ieland_falle eq 5309) or (ieland_falle eq 5311) or (ieland_falle eq 5316) or (ieland_falle eq 5318) or (ieland_falle eq 5322) or (ieland_falle eq 5324) or (ieland_falle eq 5325) or (ieland_falle eq 5326) or (ieland_falle eq 5328) or (ieland_falle eq 5336) or (ieland_falle eq 5338) or (ieland_falle eq 5339) or (ieland_falle eq 5342) or (ieland_falle eq 5344) or (ieland_falle eq 5345) or (ieland_falle eq 5346) or (ieland_falle eq 5347) or (ieland_falle eq 5348) or (ieland_falle eq 5352) or (ieland_falle eq 5353) or (ieland_falle eq 5354) or (ieland_falle eq 5356) or (ieland_falle eq 5358) or (ieland_falle eq 5364) or (ieland_falle eq 5366) or (ieland_falle eq 5372) or (ieland_falle eq 5374) or (ieland_falle eq 5376) or (ieland_falle eq 5392) or (ieland_falle eq 5394) or (ieland_falle eq 5395) or (ieland_falle eq 5398) or (ieland_falle eq 5526) or (ieland_falle eq 5527) or (ieland_falle eq 5528) or (ieland_falle eq 5529) or (ieland_falle eq 5530) or (ieland_falle eq 5625) then oprindelse_falle=55; if (ieland_falle eq 5444) then oprindelse_falle=60; if (ieland_falle eq 5402) or (ieland_falle eq 5403) or (ieland_falle eq 5404) or (ieland_falle eq 5406) or (ieland_falle eq 5408) or (ieland_falle eq 5410) or (ieland_falle eq 5412) or (ieland_falle eq 5414) or (ieland_falle eq 5416) or (ieland_falle eq 5418) or (ieland_falle eq 5424) or (ieland_falle eq 5428) or (ieland_falle eq 5432) or (ieland_falle eq 5434) or (ieland_falle eq 5436) or (ieland_falle eq 5438) or (ieland_falle eq 5442) or (ieland_falle eq 5446) or (ieland_falle eq 5448) or (ieland_falle eq 5452) or (ieland_falle eq 5454) or (ieland_falle eq 5456) or (ieland_falle eq 5457) or (ieland_falle eq 5458) or (ieland_falle eq 5459) or (ieland_falle eq 5464) or (ieland_falle eq 5466) or (ieland_falle eq 5468) or (ieland_falle eq 5471) or (ieland_falle eq 5472) or (ieland_falle eq 5473) or (ieland_falle eq 5474) or (ieland_falle eq 5478) or (ieland_falle eq 5482) or (ieland_falle eq 5484) or (ieland_falle eq 5486) or (ieland_falle eq 5487) or (ieland_falle eq 5488) or (ieland_falle eq 5492) or (ieland_falle eq 5493) or (ieland_falle eq 5494) or (ieland_falle eq 5496) or (ieland_falle eq 5498) or (ieland_falle eq 5499) or (ieland_falle eq 5533) then oprindelse_falle=65; if (ieland_falle eq 5502) or (ieland_falle eq 5514) then oprindelse_falle=70; if (ieland_falle eq 5274) or (ieland_falle eq 5275) or (ieland_falle eq 5505) or (ieland_falle eq 5506) or (ieland_falle eq 5508) or (ieland_falle eq 5522) or (ieland_falle eq 5534) or (ieland_falle eq 5599) or (ieland_falle eq 5623) then oprindelse_falle=75; if (ieland_falle eq 5103) then oprindelse_falle=80; if (ieland_falle eq 5000) or (ieland_falle eq 5001) or (ieland_falle eq 5102) or (ieland_falle eq 5116) or (ieland_falle eq 5132) or (ieland_falle eq 5143) or (ieland_falle eq 5186) or (ieland_falle eq 5248) or (ieland_falle eq 5290) or (ieland_falle eq 5367) or (ieland_falle eq 5476) or (ieland_falle eq 5800) or (ieland_falle eq 5999) then oprindelse_falle=85; if (ieland_falle eq 5406) or (ieland_falle eq 5403) or (ieland_falle eq 5496) or (ieland_falle eq 5436) or (ieland_falle eq 5438) or (ieland_falle eq 5272) or (ieland_falle eq 5442) or (ieland_falle eq 5446) or (ieland_falle eq 5456) or (ieland_falle eq 5478) or (ieland_falle eq 5486) or (ieland_falle eq 5402) or (ieland_falle eq 5487) then oprindelse_falle=90; run; proc freq data=eget.oprindelse_falle; tables oprindelse oprindelse_falle; run; */ ******************************************************************konstruktion af formater til rekodede variable;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; proc format; VALUE kom 101 = 'Københavns kommune' 147 = 'Frederiksberg kommune' 151-189 = 'Københavns amt' 201-237 = 'Frederiksborg amt' 251-271 = 'Roskilde amt' 301-345 = 'Vestsjællands amt' 351-397 = 'Storstrøms amt' 400-411 = 'Bornholms amt' 421-499 = 'Fyns amt' 501-545 = 'Sønderjyllands amt' 551-577 = 'Ribe amt' 601-631 = 'Vejle amt' 651-685 = 'Ringkøbing amt' 701-751 = 'Århus amt' 761-793 = 'Viborg amt' 801-861 = 'Nordjyllands amt' 901-953 = 'Grønland' 961 = 'Udenfor kommuneinddeling'; value hfk 3 = 'Uddannelseskilde besvaret' 9 = 'Uddannelseskilde imputeret' 5 = 'Ingeniørforeningen' 4 = 'Ny udd i DK overskriver' . = 'Forsinket kilde'; value alderny 1 = '22 aar eller derunder' 2 = '23-24 aarige' 3 = '25-29 aarige' 4 = '30-34 aarige' 5 = '35-39 aarige' 6 = '40-44 aarige' 7 = '45-49 aarige' 8 = '50-54 aarige' 9 = '55-59 aarige' 10 = '60-64 aarige' 11 = '65 aar eller derover'; value alder_falleny 1 = '22 aar eller derunder' 2 = '23-24 aarige' 3 = '25-29 aarige' 4 = '30-34 aarige' 5 = '35-39 aarige' 6 = '40-44 aarige' 7 = '45-49 aarige' 8 = '50-54 aarige' 9 = '55-59 aarige' 10 = '60-64 aarige' 11 = '65 aar eller derover'; value age 1 = '22 aar eller derunder' 2 = '23-29 aarige' 3 = '30-39 aarige' 4 = '40-49 aarige' 5 = '50-59 aarige' 6 = '60 aar eller derover'; value age_falle 1 = '22 aar eller derunder' 2 = '23-29 aarige' 3 = '30-39 aarige' 4 = '40-49 aarige' 5 = '50-59 aarige' 6 = '60 aar eller derover'; value kohorte 1 = 'indvandret foer integrationsloven' 2 = 'indvandret efter integrationsloven'; value st 1 = 'beskaeftiget paa hoejt niveau' 2 = 'beskaeftiget paa mellem niveau' 3 = 'beskaeftiget paa lavt niveau' 4 = 'selvstandige' 5 = 'arbejdslos' 6 = 'udenfor arbejdsstyrken' 7 = 'under uddannelse' 8 = 'pensionister, born og unge' 9 = 'barsel'; value st_falle 1 = 'beskaeftiget paa hoejt niveau' 2 = 'beskaeftiget paa mellem niveau' 3 = 'beskaeftiget paa lavt niveau' 4 = 'selvstandige' 5 = 'arbejdslos' 6 = 'udenfor arbejdsstyrken' 7 = 'under uddannelse' 8 = 'pensionister, born og unge'; *uddannelsesformat; value udd 1 = 'Mellemlang videregaaende uddannelse' 2 = 'Lang videregaaende uddannelse' 0 = 'Andet'; *uddannelsesformat cfallen; value udd_falle 1 = 'Grundskole' 2 = 'Forberedende kurser' 3 = 'Alm. gymnasie' 4 = 'Handelsskole' 5 = 'Erhvervsfaglig' 6 = 'AMU' 7 = 'Kort videregaaende uddannelse' 8 = 'Mellemlang videregaaende uddannelse' 9 = 'Lang videregaaende uddannelse' 0 = 'Andet'; *oprindelse hovedperson; value opr 10 = 'Danmark' 15 = 'Gronland' 20 = 'Faeroerne' 30 = 'EU-lande' 35 = 'Mindre udv. lande i Europe' 40 = 'Ovrige Europa' 45 = 'Afrika' 50 = 'Nordamerika' 55 = 'Syd- og Mellemamerika' 60 = 'Japan' 65 = 'Ovrige Asien' 70 = 'Australien, New Zealand' 75 = 'Ovrige Oceanien' 80 = 'Statsloes' 85 = 'Uoplyst' 90 = 'Mellemosten'; *oprindelse cfalle; value opr_falle 10 = 'Danmark' 15 = 'Gronland' 20 = 'Faeroerne' 30 = 'EU-lande' 35 = 'Mindre udv. lande i Europe' 40 = 'Ovrige Europa' 45 = 'Afrika' 50 = 'Nordamerika' 55 = 'Syd- og Mellemamerika' 60 = 'Japan' 65 = 'Ovrige Asien' 70 = 'Australien, New Zealand' 75 = 'Ovrige Oceanien' 80 = 'Statslos' 85 = 'Uoplyst' 90 = 'Mellemosten'; run; /* proc print data=eget.oprindelse_falle (obs=10000); var nypnr pnr_falle uddannelse uddannelse_falle oprindelse oprindelse_falle age age_falle stilling stilling_falle; format uddannelse uddannelse. uddannelse_falle uddannelse_falle. oprindelse oprindelse. oprindelse_falle oprindelse_falle. age age. age_falle age_falle. stilling stilling. stilling_falle stilling_falle.; where uddannelse ne 0; run; value ikkevest_vest *vestlig ikke vestlig; value ieland 5001,5102,5800,5999 = 'Uoplyst' 5100,5101,5115,5902 = 'Danmark, Grønland, Færøerne' 5104,5105,5106,5107,5108,5109,5110,5111,5120,5122,5124,5126,5128,5129,5130,5134,5140, 5142,5150,5152,5153,5154,5156,5158,5159,5160,5162,5164,5170,5174,5180,5182,5184,5199, 5314,5390,5397,5399,5444,5502,5514,5607,5609,5611,5700,5704,5706,5712,5750,5752,5754, 5756,5758,5776,5778,5151 = 'Mere udviklede lande' 5000,5103,5116,5132,5143,5172,5186,5202,5204,5207,5213,5214,5215,5216,5222,5228,5230, 5231,5232,5233,5234,5235,5236,5238,5240,5242,5243,5244,5245,5246,5247,5248,5253, 5255,5256,5258,5259,5262,5264,5266,5268,5269,5272,5274,5275,5276,5277,5278,5279,5281, 5282,5283,5284,5285,5286,5287,5288,5289,5290,5292,5293,5294,5295,5296,5297,5298,5299, 5301,5302,5303,5304,5305,5306,5307,5308,5309,5311,5316,5318,5322,5324,5325,5326,5328, 5336,5338,5339,5342,5344,5345,5346,5347,5348,5352,5353,5354,5356,5358,5364,5366,5367, 5372,5374,5376,5392,5394,5395,5398,5402,5403,5404,5406,5408,5410,5412,5414,5416,5418, 5422,5424,5428,5432,5434,5436,5438,5442,5446,5448,5452,5454,5456,5457,5458,5459,5464, 5466,5468,5471,5472,5473,5474,5476,5478,5482,5484,5486,5487,5488,5492,5493,5494,5496, 5498,5499,5505,5506,5508,5522,5525,5526,5527,5528,5529,5530,5533,5534,5599, 5623,5625,5708,5710,5714,5716,5718,5720,5722,5724 = 'Mindre udviklede lande'; run; *vestlig ikke-vestlig cfalle; value ieland_falle 5001,5102,5800,5999 = 'Uoplyst' 5100,5101,5115,5902 = 'Danmark, Grønland, Færøerne' 5104,5105,5106,5107,5108,5109,5110,5111,5120,5122,5124,5126,5128,5129,5130,5134,5140, 5142,5150,5152,5153,5154,5156,5158,5159,5160,5162,5164,5170,5174,5180,5182,5184,5199, 5314,5390,5397,5399,5444,5502,5514,5607,5609,5611,5700,5704,5706,5712,5750,5752,5754, 5756,5758,5776,5778,5151 = 'Mere udviklede lande' 5000,5103,5116,5132,5143,5172,5186,5202,5204,5207,5213,5214,5215,5216,5222,5228,5230, 5231,5232,5233,5234,5235,5236,5238,5240,5242,5243,5244,5245,5246,5247,5248,5253, 5255,5256,5258,5259,5262,5264,5266,5268,5269,5272,5274,5275,5276,5277,5278,5279,5281, 5282,5283,5284,5285,5286,5287,5288,5289,5290,5292,5293,5294,5295,5296,5297,5298,5299, 5301,5302,5303,5304,5305,5306,5307,5308,5309,5311,5316,5318,5322,5324,5325,5326,5328, 5336,5338,5339,5342,5344,5345,5346,5347,5348,5352,5353,5354,5356,5358,5364,5366,5367, 5372,5374,5376,5392,5394,5395,5398,5402,5403,5404,5406,5408,5410,5412,5414,5416,5418, 5422,5424,5428,5432,5434,5436,5438,5442,5446,5448,5452,5454,5456,5457,5458,5459,5464, 5466,5468,5471,5472,5473,5474,5476,5478,5482,5484,5486,5487,5488,5492,5493,5494,5496, 5498,5499,5505,5506,5508,5522,5525,5526,5527,5528,5529,5530,5533,5534,5599, 5623,5625,5708,5710,5714,5716,5718,5720,5722,5724 = 'Mindre udviklede lande'; run; */ ***********************************************************************hertil..Snit som skal foretages;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; *datasættet reduceres til udelukkende at indeholde kvinder; /* data eget.kvinder; set eget.oprindelse_falle; by nypnr; if koen = 2; run; *hvor mange individer reduceres datasættet med..; data test; set eget.kvinder; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr koen; where pnr ne .; run; */ *på baggrund af taller-variablen laves her en indikator for kvinder som har været i landet i 5 år eller derover; /* data diff; set eget.kvinder; by nypnr aar; indikator = 0; if (taller=5) or (taller=6) or (taller=7) or (taller=8) or (taller=9) or (taller=10) or (taller=11) or (taller=12) or (taller=13) or (taller=14) or (taller=15) or (taller=16) then indikator = 1; run; *data reduceres til kvinder med forlob paa minimum 5 aar; data eget.fem; set diff; if indikator = 1; run; data test; set eget.fem; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr indikator; where pnr ne .; run; proc freq data=eget.fem; tables nypnr taller; run; */ *men eftersom jeg kun skal folge dem i 5 aar fra deres ankomsttidspunkt skaeres forlobene til, for kvinder som har vaeret her laengere; *steppet bor ikke reducere antallet af kvinder; /* data tid; set eget.fem; by nypnr aar; ankomsttid= aar-forste_aar; run; data eget.tid; set tid; by nypnr aar; *output hvis de har vaeret her 5 aar eller mere men kun i de forste 5 aar; if (taller ge 5) and (ankomsttid le 4) then output; run; *test; data test; set eget.tid; by nypnr aar; if last.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr ankomsttid; where pnr ne .; run; */ *data reduceres til kvinder med en ankomstalder på 23-55 aar og med ankomst mellem 1990 og 2001; /* data eget.alder; set eget.tid; if (ankomstalder ge 23) and (ankomstalder le 55); run; *test; data test; set eget.alder; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr ankomsttid; where pnr ne .; run; */ /* data eget.ankomst; set eget.alder; if (forste_aar ge 1990) and (forste_aar le 2001); run; *test; data test; set eget.ankomst; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var pnr ankomsttid; where pnr ne .; run; */ *hfkilde og uddannelse fikses. en raekke huller lappes - blandt andet kvinder hvis medbragte uddannelse ikke er registreret det forste aar; *samt kvinder som på et tidspunkt har taget en dansk uddannelse og som derfor står med en anden uddannelse og en anden kilde; *kilde 5 betyder at kilden for den medbragte uddannelse er ingeniørforeningens medlemsregister; /* data eget.uddtid; set eget.ankomst; by nypnr aar; forpnr = lag(nypnr); retain uddet; if forpnr ne nypnr then uddet=.; if (uddannelse = 1) then uddet=1; retain uddto; if forpnr ne nypnr then uddto=.; if (uddannelse = 2) then uddto=2; retain kildeny; if forpnr ne nypnr then kildeny=.; if (hfkilde = 3) or (hfkilde=9) or (hfkilde=5) then kildeny=1; run; proc sort data=eget.uddtid; by nypnr descending aar; run; data eget.uddtidlap; set eget.uddtid; by nypnr descending aar; efterpnr = lag(nypnr); retain uddlapet; if efterpnr ne nypnr then uddlapet=.; if (uddet = 1) then uddlapet=1; retain uddlapto; if efterpnr ne nypnr then uddlapto=.; if (uddto = 2) then uddlapto=2; retain kildelap; if efterpnr ne nypnr then kildelap=.; if (kildeny = 1) then kildelap=1; run; proc sort data=eget.uddtidlap; by nypnr aar; run; proc print data=eget.uddtidlap; var nypnr aar uddannelse hfkilde uddlapet uddlapto kildelap; run; *data reduceres til kvinder med mellemlange og lange medbragte uddannelser hvor uddannelseskilden er imputeret; *selvoplyst eller indberettet via ingeniorforeningen; */ /* data eget.kilde_udd; set eget.uddtidlap; by nypnr aar; if ((uddlapet=1) or (uddlapto=2)) and (kildelap=1); run; */ /* proc print data=eget.kilde_udd; var aar ankomsttid nypnr uddlapet uddlapto hfkilde; format uddlapet udd. uddlapto udd. hfkilde hfk.; run; proc freq data=eget.kilde_udd; tables ankomsttid uddlapet uddlapto hfkilde; format uddlapet udd. uddlapto udd. hfkilde hfk.; run; */ *der laves en ny uddannelsesvariabel som rummer den samlede uddannelsesinformation; /* data eget.udd_variabel; set eget.kilde_udd; by nypnr aar; udd_samlet = 0; if uddlapet = 1 then udd_samlet=1; if uddlapto = 2 then udd_samlet=2; if nypnr=227810765134 then delete; run; proc freq data=eget.udd_variabel; tables ankomsttid udd_samlet stilling; format udd_samlet udd. stilling st.; run; *test; data test; set eget.udd_variabel; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var aar ankomsttid nypnr uddannelse hfkilde; where pnr ne .; run; */ *der er fortsat en raekke kvinder i datasaettet som på et tidspunkt i deres forlob pensioneres - de skaeres fra her; /* data eget.stilling; set eget.udd_variabel; by nypnr aar; if (nypnr=49969287) or (nypnr=227810765134) or (nypnr=224718675444) or (nypnr=224693690643) or (nypnr=218555326194) or (nypnr=212399947459) or (nypnr=209253185614) or (nypnr=200041525763) or (nypnr=184736481559) or (nypnr=187703506941) or (nypnr=172318226389) or (nypnr=46224556959) or (nypnr=43121835244) or (nypnr=37034462346) or (nypnr=37029244803) or (nypnr=30786605357) or (nypnr=30785222332) or (nypnr=30771158267) or (nypnr=27808554652) or (nypnr=24691578433) or (nypnr=21614720163) or (nypnr=18492479733) or (nypnr=104672477589) or (nypnr=104666690182) or (nypnr=101572459350) or (nypnr=95457359503) or (nypnr=95455876672) or (nypnr=83192335901) or (nypnr=80033673084) or (nypnr=76964061869) or (nypnr=64664111302) or (nypnr=55422200911) or (nypnr=52316841581) or (nypnr=49244813822) or (nypnr=166178268336) or (nypnr=163199590193) or (nypnr=163151907158) or (nypnr=160052984529) or (nypnr=157025466979) or (nypnr=153858564794) or (nypnr=129275259544) or (nypnr=123199283515) or (nypnr=120083400042) or (nypnr=120066293998) or (nypnr=113895527753) or (nypnr=104701715409) or (nypnr=18478370365) or (nypnr=15507243349) or (nypnr=230781951357) or (nypnr=21642576973) or (nypnr=113961033093) then delete; run; proc print data=eget.stilling; var ankomsttid nypnr stilling; format stilling st.; where stilling=8; run; *test; data test; set eget.stilling; by nypnr aar; if first.nypnr then do; pnr=nypnr; end; run; proc print data=test; var aar ankomsttid nypnr; where pnr ne .; run; */ *På baggrund af det endelige datasaet laves der afslutningsvist en transitions matrix for beskriver hvor mange overgange der forekommer i datasaettet mellem de; *8 forskellige definerede stillingspositioner. Transitionerne bruges efterfølgende som udgangspunkt for definition af den substitution matrix som; *danner grundlag for matching proceduren af de femårige kvindesekvenserne; data test; set eget.stilling; lag_stilling=lag(stilling); run; data eget.slut; set test; by nypnr; if FIRST.nypnr then delete; run; PROC TABULATE data=eget.slut; CLASS stilling lag_stilling; FORMAT stilling st. lag_stilling st.; TABLE stilling , lag_stilling /RTS=30; RUN; PROC FREQ data=eget.slut; FORMAT stilling st. lag_stilling st.; TABLE stilling*lag_stilling; RUN;