69
Kort introduktion til SAS Janne Petersen Efterår 2013

Kort introduktion til SASstaff.pubhealth.ku.dk/~lts/basal/overheads/backup/lynsas.pdf · 2017. 12. 18. · SAS systemet Styrken i SAS er dets evne til at håndtere store datasæt

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

  • Kort introduktion til SAS

    Janne Petersen

    Efterår 2013

  • SAS systemet

    Styrken i SAS er dets evne til at håndtere store datasæt. Det erhurtigt og har mange statistiske og ikke-statistiske muligheder.

    Kan "alt", så det er ikke nødvendigt at skifte program undervejs.Alle ph.d.-studerende kan få SAS gratis.

    En af ulemperne ved SAS er, at det tager noget tid at sætte sigind i det. Der eksisterer dog forskellige brugervenligeinter-faces, f.eks. Enterprise Guide.

    Alternative store programmer: SPSS, R og Stata.

  • SAS vinduer

    Enhanced Editor: Program editor, hvor ens program kodeskrives. Dvs. det er her, man fortæller SAS, hvaddet er, den skal gøre.

    Log: Her skrives løbende, hvad SAS laver, noter om fejlm.m.

    Results Viewer: Output fra ens kørsler, fortløbende.Output: Output fra ens kørsler, fortløbende. Dvs.

    resultaterne af ens kode.Results: Overblik over output

    Explorer: Libraries (SAS-software-biblioteker) og FileShortcuts.

  • Kommando linien: Kan give korte kommandoer til SAS, f.eks.help freq.

    Menu linien: (Den øverste linie) Indeholder forskellige peg ogklik muligheder (som alle andre Windowsprogrammer)

    Værktøjs linien: Forskellige nyttige ikoner.

  • Filer

    Disse er de vigtigste af de filer, SAS laver, når man kører SAS.

    - *.SAS filer (SAS program)- *.LOG filer (Log)- *.LST filer (Output)- *.HTML nye SAS output-filer- *.sas7bdat filer (Datasæt)

  • Fejl i loggen

    Vigtigt: kig altid log filen igennem, efter du har kørt et program.

    Note (blå): information, der ikke indikerer en fejl, menen oplysning, som man bør læse, fordi den kanvære informativ og god til af finde metodefejl.Eksemper: Antal observationer i et data sæt kanvære lavere end forventet.

    Warning (grøn): viser fejl som SAS selv har kunnet rette.Programmet er gennemført med disse fejl, mentjek om dette er gjort ordentligt. Eksempel:stavefejl.

  • Error (rød): Alvorlige fejl, som SAS ikke kunne rette,programmet er stoppet, og man må selv findefejlen og rette den. Eksempel: glemt semikolon.

    Vær opmærksom på at røde fejl i et datastep betyder, at derikke bliver lavet noget nyt datasæt.

  • Kør programmet

    Funktionstaster F8Menulinie Run, SubmitKommando SubmitVærktøjslinie Mand, der løber

    Hvis man kun ønsker at køre en del af sit program, kan manmarkere delen og køre den.

  • Hjælpe funktioner

    ♣ Menulinien "Help"♣ SAS manualen:

    http://support.sas.com/onlinedoc/913/docMainpage.jsp♣ Kommando feltet: skriv f.eks. help freq.♣ Google is your friend.

  • Alle SAS datasæt er gemt i et SAS Library.

    Der findes to standard Library i SAS ved standard opsætning:WORK og SASUSER

    I WORK gemmes alle de midlertidige SAS datasæt. Alt iWORK slettes ved lukning af SAS.

    I SASUSER gemmes alle datasæt permanent, dvs. de er derstadig, når SAS startes næste gang.

  • SAS Programmering

    SAS programmering foregår i 2 forskellige trin: DATA trin ogprocedure (PROC) trin.

    DATA trin:1. indlæser data fra fil2. laver transformationer og tilføjer nye variable3. laver nyt SAS data sæt, med de nye rettelser.

  • Procedure trin:1. Bruger SAS data sæt2. Producerer den information, vi vil have, f.eks. tabeller,

    statistik, grafer m.v.

  • Data trin

    DATA WORK.test; /*Det nye datasæt hedder test*/SET WORK.test1; /*Indlæser datasættet test1*/

    RUN; /*Slutter data trinnet*/

    Læser det midlertidige datasæt ’test1’ ind fra WORK oggemmer det i det midlertidige datasæt ’test’, også i WORK.

    - Husk ; efter hver linie.- Det, jeg skriver med store bogstaver, er ord, SAS kender.- Ikke nødvendigt at skrive “WORK.”- /* starter en kommentar, mens */ slutter en kommentar.

  • Oprettelse af et permanent datasæt.

    LIBNAME us1 "P:\janne\SASkursus";

    Tænk på us1 som en forkortelse for stien"P:\janne\SASkursus"

    DATA us1.test; /*Laver et permanent datasæt.*/SET test1; /*Indlæser det midlertidige data sæt test1.*/

    RUN; /*Slutter data trinnet.*/

    Denne lille program stump gemmer altså vores midlertidigedatasæt ’test1’ i et permanent datasæt ’test’, der lægges ifolderen P:\janne\SASkursus.

  • Indlæsning af et permanent SAS datasæt.

    Indlæsning af et permanent SAS datasæt, test1.sas7bdat, frafolderen P:\janne\SASkursus.

    LIBNAME us1 "P:\janne\SASkursus";

    DATA test; /*Laver et midlertidigt datasæt ’test’ i WORK*/SET us1.test1; /*Indlæser det permanente

    SAS datasæt ’test1(.sas7bdat)’ fra P:\janne\SASkursus*/RUN; /*Slutter data trinnet.*/

    PAS PÅ MED AT OVERSKRIVE JERES DATASÆT!!

  • Indlæsning af .txt filer

    DATA a;INFILE "C:\Basal\hjerte.txt" firstobs=2;INPUT hjerte total; /*Navnene på variablene i

    datasættet—i rigtig række følge*/RUN;

    Indlæser files hjerte.txt som ligger C:\Basal\ og ligger det overi SAS datasættet a.firstobs fortæller SAS at data først starter i linie 2.

  • Indtastning af datasæt

    DATA test1;INPUT id alder sex$; /*liste over variable, der skal

    læses ind, skriv ’$’ efter tekst variable*/DATALINES;1 45 m2 35 m3 40 m4 43 k5 56 k6 45 k;

    RUN;

  • Variable

    Der er to typer af variable i SAS, numeriske og tekst variable.

    En typisk tekst variabel er bogstaver, men det kan også væretal.Eksempel: Month med værdierne ’Jan’, ’Feb’, . . ., ’Dec’.

    En numerisk variabel er altid tal.Eksempel: alder med værdier 45,13, . . . ,30. Eksempelvismiddelværdier kan kun beregnes på numeriske variable. Manbenytter decimalpunktum, ikke komma.

    I Explorer vinduet I kan se hvilke variable, der er tekst variable,og hvilke variable, der er nummeriske, ved at højreklikke påjeres datasæt og vælge View Columns. Husk at lukkedatasættet igen med det samme!

  • Udvælgelse af variable

    DATA test; /*Det nye data sæt hedder test*/SET test1; /*Indlæser data sættet test1*/KEEP var1 var2 var3;

    RUN; /*Slutter data trinnet.*/

    Indlæser hele test1 datasættet, men gemmer kun variablenevar1, var2 og var3 i datasættet test.

    "Observationer" er rækker i datasættet."Variable" er kolonner i datasættet.

  • Sletning af variable

    DATA test; /*Det nye data sæt hedder test*/SET test1; /*Indlæser data sættet test1*/DROP var1 var2 var3;

    RUN; /*Slutter data trinnet.*/

    Indlæser igen hele test1 data sættet, og gemmer alle andrevariable i datasættet test end var1, var2 og var3.

  • Udvælgelse af observationer

    DATA test;SET test1;IF var1>8; /*Vælger alle dem med ’var1’ større end 8*/

    RUN;

    Indlæser igen ’test1’ og laver et nyt data sæt ’test’, kun med deobservationer/personer, der har mere end 8 i ’var1’.

  • Sletning af observationer

    DATA test;SET test1;IF var1>8 THEN DELETE; /*sletter dem med ’var1’ >

    8*/RUN;

    Her gør vi altså det modsatte, vi fjerner dem, der har ’var1’større end 8 fra ’test’ datasættet.

  • Hvis det er en tekst variabel, vi laver filter/betingelse på, så skalværdien i plinger (’) eller i gåseøjne (") (Pas på! Husk at brugesamme slags både før og efter tekststrengen):

    DATA test;SET test1;IF fag = ’Mat’; /*Udvælger dem, hvor ’fag’ er lig Mat

    RUN;

    Bemærk, at store/små bogstaver IKKE er lige meget i "Mat",det skal se ud præcis som det er kodet i datasættet.

  • Oversigt over forskellige operatorer

    Forklaring Eksempel= EQ lig med karakter = 8ˆ= NE forskellig fra karakter NE 8< LT mindre end karakter < 8> GT større end karakter > 8= GE større end eller lig karakter GE 8

    IN tilhører karakter IN (6, 7, 8)& AND og karakter=8 AND fag=’Mat’| OR eller karakter=8 OR fag=’Mat’ˆ NOT negation NOT(karakter IN (6,7,8))

  • Oprettelse afvariable ved beregning

    DATA test;SET us1.test1;k = 10 + var1; /*Ny variabel ’k’, der er var1+10*/m = 10 * var1; /*Ny variabel ’m’, der er var1*10*/expvar1=exp(var1); /*Ny variabel ’expvar1’, der er evar1*/

    RUN;

  • Regneudtryk og funktioner

    Regneudtryk og funktioner** Potensopløftning* Multiplikation/ Division+ Addition- SubtraktionEXP(argument) EksponentialfunktionenLOG(argument) Naturlig logaritmeLOG10(argument) 10-tals logaritmeLOG2(argument) 2-tals logaritmeSQRT(argument) KvadratrodenABS(argument) Numerisk værdiINT(argument) Den hele del afROUND(argument, afrundingsenhed) Afrundet værdi

  • Oprettelse af nye variable ved gruppering

    DATA test;SET test1;IF sp5vgt >= 160 THEN tung = ’ja ’; /*Bemærk det

    ekstra mellemrum efter ja*/IF sp5vgt < 160 THEN tung= ’nej’;

    RUN;

    Tung har værdien ’ja ’, hvis personen har en vægt på 160 ellerderover, og ’nej’, hvis vægt er under 160 eller manglende.

    Manglende værdi regner SAS som en værdi på minus uendelig.

  • Manglende værdier

    Manglende værdier af en tekst variabel er angivet ved et blanktfelt, mens manglende for en nummerisk er angivet ved et ., elleret .x

    Nummerisk manglende . eller .x tæller som −∞, så pas påmed f.eks. IF alder

  • SAS programstruktur

    DATA trin:1. indlæser data fra fil2. laver transformationer og tilføjer nye variable3. laver et nyt SAS datasæt (eller overskriver et gammmelt).

    Procedure trin:1. Bruger SAS datasæt2. Producerer den information, vi vil have, f.eks. tabeller,

    statistik og grafer.

  • Procedure trin

    SAS indeholder en lang række procedurer, der er inddelt imoduler efter deres anvendelse

    Ligesom et data trin altid starter med et DATA, starter etprocedure trin altid med et PROC.

  • PROC procnavn DATA=datanavn;(ordrer vedr. udførelsen)

    RUN;

    Her gælder følgende: ’datanavn’ angiver hvilket datasæt,proceduren skal arbejde på. Undlades ’DATA=datanavn’,benytter proceduren det senest oprettede SAS-datasæt.

    Der findes rigtigt mange forskellige ordrer til hver procedure.

    Resultaterne af en procedure kommer i Output-vinduet, medmindre man specifikt har bedt SAS om noget andet.

  • PROC CONTENTS

    Skal man have oplysninger om antallet af observationer ognavnene på de variable, der er i datasættet, kan man brugePROC CONTENTS.

    PROC CONTENTS DATA=test;RUN;

  • PROC SORT

    Denne procedure kan sortere datasættet efter en eller flerevariable.

    PROC SORT DATA= datanavn;BY variabel1;

    RUN;

    Datasættet ’datanavn’ bliver her sorteret efter voksendeværdier af ’variabel1’, dvs. fra mindst til størst.

    Visse procedurer og data trin kræver en sortering af data, førde kan gennemføres.

  • PROC PRINT

    PROC PRINT udskriver datasættet, eller eventuelt kun dele afdet.

    PROC PRINT DATA= test;RUN;

    Udskriver samtlige observationer og samtlige variable tilskærmen.

    PROC PRINT DATA= test;VAR var1 var2;

    RUN;

    Udskriver variablene ’var1’ og ’var2’ for samtlige observationer.

  • PROC PRINT DATA= test;WHERE var1 = 8;VAR var1 var2;

    RUN;

    Udskriver variablene ’var1’ og ’var2’ for dem, der har 8 i ’var1’.Rækkefølgen på VAR og WHERE er ligegyldig.

  • Eksempel: PROC PRINT

    /*sorter datasættet efter det diastoliske blodtryk*/PROC SORT DATA= test;

    BY dias;RUN;/*printer det systoliske og det diastoliske blodtryk til outputvinduet*/PROC PRINT DATA= test;

    VAR dias syst;RUN;

  • PROC MEANS

    Proc Means bruges, når man skal have beregnet summer,gennemsnit, standardafvigelser osv.

    PROC MEANS DATA=test;VAR hoejde;

    RUN;

  • The SAS System 14:31 Saturday, March 17, 2007 1

    The MEANS Procedure

    Analysis Variable : hoejd Højde

    N Mean Std Dev Minimum Maximum__________________________________________________________________18 174.8888889 6.2955529 163.0000000 189.0000000__________________________________________________________________

  • PROC MEANS

    Man kan specificere præcis, hvad det er, der skal udregnes, påfølgende måde:

    PROC MEANS DATA=test1 N MEAN P25 P50 P75 SUM;VAR var1;

    RUN;

    Her skal SAS beregne, hvor mange, der har ’var1’ oplyst,middelværdien, 25, 50 og 75 percentilerne af ’var1’ samtsummen af variablen ’var1’.

  • N Antal observationer med ikke manglende værdierNMISS Antal observationer med manglende værdierMEAN x = 1N

    ∑Ni=1 xi Gennemsnit

    STD s =√

    1N−1

    ∑Ni=1(xi − x)2 Spredning

    MIN x(1) MinimumMAX x(N) MaximumRANGE x(N) − x(1) VariationsbreddeSUM

    ∑Ni=1 xi Summen af observationerne

    VAR s2 = 1N−1∑N

    i=1(xi − x)2 Empirisk variansCSS

    ∑Ni=1(xi − x)2 Kvadratafvigelsessummen

    CV 100 sx % Variations koefficientenSTDERR s√

    NEstimeret spredning på gennemsnittet

  • Eksempel 2: PROC MEANS

    Man kan også beregne værdierne for forskellige undergrupperaf data:

    PROC SORT DATA= test1;BY ryger;

    RUN;

    PROC MEANS DATA=test1 N MEAN P50;VAR gensys gendia;BY ryger;

    RUN;

  • The SAS System 14:31 Saturday, March 17, 2007 33

    Ryger De?=Ja, dagligtThe MEANS ProcedureVariable N Mean 50th Pctl______________________________________________gensys 3 125.6666667 126.6666667gendia 3 83.1111111 80.0000000______________________________________________

    Ryger De?=Ja men der er dage hvor jeg ikke rygerVariable N Mean 50th Pctl______________________________________________gensys 2 127.6666667 127.6666667gendia 2 79.6666667 79.6666667______________________________________________

    Ryger De?=NejVariable N Mean 50th Pctl______________________________________________gensys 13 124.8461538 125.0000000gendia 13 77.5641026 80.3333333______________________________________________

  • PROC FREQ

    PROC FREQ bruges til at lave tabeller med. Den kan lave en-eller flersidede tabeller.

    Ensidet tabel.

    PROC FREQ DATA= test;TABLE sp13;

    RUN;

    SAS tabellerer variablen ’sp13’ på datasættet ’test’.

  • The SAS System 09:42 Monday, March 19, 2007 1

    The FREQ Procedure

    I hvilken grad har De haft tillid til, at De har faet den rettesygeplejefaglige behandling?

    Cumulative Cumulativesp13 Frequency Percent Frequency Percent

    _____________________________________________________________________________I høj grad 3 16.67 3 16.67I nogen grad 11 61.11 14 77.78I mindre grad 3 16.67 17 94.44Har ikke faet sygeplejefaglig 1 5.56 18 100.00behandling

  • PROC FREQ

    Man kan også liste en hel række af variable, man gerne vilhave lavet tabeller over.

    PROC FREQ DATA= test;TABLE var1 var2 var3;

    RUN;

    Hvis man vil have lavet flervejs tabeller (krydstabeller), sætterman en stjerne imellem de variable der skal tabelleres modhinanden.

    PROC FREQ DATA= test;TABLE sp14t*sp13/NOCOL;

    RUN;

  • sp14t(Oplevede De, at der var 1-2 sygeplejerser i afdelingen, der havde særligt ansvar for deres pleje?)sp13(I hvilken grad har De haft tillid til, at De har fået den rette sygeplejefaglige behandling?)

    FrequencyPercentRow Pct I høj gr I nogen I mindre Har ikke Total

    ad grad grad fået behJa 2 3 0 1 6

    11.11 16.67 0.00 5.56 33.3333.33 50.00 0.00 16.67

    Nej 1 7 3 0 115.56 38.89 16.67 0.00 61.119.09 63.64 27.27 0.00

    Ved ikke 0 1 0 0 10.00 5.56 0.00 0.00 5.560.00 100.00 0.00 0.00

    Total 3 11 3 1 1816.67 61.11 16.67 5.56 100.00

  • Eksempel: PROC FREQ

    Der bliver her som standard i hver enkelt celle angivet antalobservationer, celle procenter, række procenter samt søjleprocenter. Men kan ved hjælp af options fjerne nogle af alledisse værdier.

    PROC FREQ DATA= test;TABLE sp14t*sp13/NOROW NOCOL NOPERCENT;

    RUN;

  • sp14t(Oplevede De, at der var 1-2 sygeplejerser i afdelingen, derhavde særligt ansvar for deres pleje?)

    sp13(I hvilken grad har De haft tillid til, at De harfået den rette sygeplejefaglige behandling?)

    Frequency|I høj gr|I nogen |I mindre|Har ikke| Total|ad |grad | grad | fået sy|| | | |geplejef|| | | |aglig be|| | | |handling|

    ______________________________________________Ja | 2 | 3 | 0 | 1 | 6______________________________________________Nej | 1 | 7 | 3 | 0 | 11______________________________________________Ved ikke | 0 | 1 | 0 | 0 | 1______________________________________________Total 3 11 3 1 18

  • Grafik

    Den mest brugte procedurer til at lave grafik med i SAS erPROC GPLOT. GPLOT bruges til at lave f.eks. scatter plots,men kan lave utrolig meget andet, deriblandt også box plots.

  • PROC GPLOT

    PROC GPLOT bruges f.eks. til at lave scatter plot med, dvs.hvis man gerne vil plotte to variable mod hinanden:

    PROC GPLOT DATA=algimin;PLOT BMI*alder;

    RUN;QUIT;

    I PLOT-ordren fortælles hvilke variable, der skal tegnes op modhinanden. Y-variablen skal stå først.

  • Hvis man gerne vil kunne se forskel på f.eks. sex, kan man laveforskellige symboler alt efter, om det er en mand eller kvinde,man plotter.

    PROC GPLOT DATA=algimin;PLOT BMI*alder=sex;

    RUN;QUIT;

  • Man kan få meget mere avancerede plot ved brug afSYMBOL-statements, der fortæller, hvad der skal ske medpunkterne og evt. i mellem punkterne. SYMBOL-statementsindeholder blandt andet beskrivelser af farve (C=. . . ),plotsymbol (V=. . . ), linietype (L=. . . ) og interpolationsmåde(I=. . . ), som angiver, om punkterne skal forbindes og i så faldhvordan.

    Et SYMBOL-statement kan se således ud:

    SYMBOLn C=BLUE V=PLUS L=1 I=RL;

  • Værdier for n: Tal fra 1 til 255Værdier for C: Almindelige farvenavne på engelsk. Hvilke der

    kan bruges afhænger af konfigurationen.Maskinen ændrer selv, hvis man bruger nogleulovlige

    Værdier for V: PLUS, STAR, DIAMOND, DOT, NONE etc.Bruger man NONE, bliver selve punkterne ikketegnet.

    Værdier for L: Tallene fra 1 til 46

  • Værdier for I NONE: punkterne forbindes ikke,BOXnn: box-plot med whiskers fra nn til100 − nn percentilen (nn=00. . . 25); medianerneforbindes, hvis man skriver J; mens T betyder, atwhiskers slutter med en lille tværstregJOIN: punkterne forbindes med rette linier,SPLINE: tegner ’glat’ kurve gennem punkterne,NEEDLE: tegner lodret linie ned til x-aksenRL: tilpasser bedste rette linieRLCLI: bedste rette linie mednn-prædiktionsgrænser (nn=50. . . 99)RLCLM: bedste rette linie med konfidensgrænserRQ: tilpasser bedste andengradspolynomium

  • Værdier for I SMnnS: tilpasser ’blød’ kurve, jo større nn er(nn=0. . . 99), jo mere glat/lige blive kurvenSTDn: tegner gennemsnit med ±nstandarddeviationer (n=1, 2, 3), dvs. forn=2 er detca 95% prædiktionsgrænserSTDnM: tegner gennemsnit med ±n SEM (n=1, 2,3) (dvs. forn=2 er det ca 95% konfidensgrænser)STEPL: tegner trappefunktion, punkterne er tilvenstre på stregen; J forbinder de vandrette liniermed lodrette linier (så det ligner en trappe) –bruges til plots af overlevelseskurverSTEPR: tegner trappefunktion, punkterne er tilhøjre på stregenSTEPC: tegner trappefunktion, punkterne erpå midten af stregen

  • Eksempel

    SYMBOL1 C=BLACK V=PLUS L=1 I=RL;

    PROC GPLOT DATA=algimin;PLOT BMI*alder=1 / FRAME HAXIS=10 TO 70 BY 10

    VAXIS=10 TO 60 BY 10;RUN;QUIT;

    Vi har her lavet et plot af BMI mod alder og sat et + for hverobservation og samtidige tegnet den bedste rette linie igennempunkterne. Ordren “=1” i PLOT statement gør, at det ersymbolerne fra SYMBOL1, der bliver brugt.

  • SYMBOL1 C=BLUE V=PLUS L=1 I=RL;SYMBOL2 C=RED I=RQ;

    PROC GPLOT DATA=algimin;PLOT BMI*alder=1

    BMI*alder=2 / FRAME OVERLAY;RUN; QUIT;OVERLAY gør, at de to plots bliver tegnet oven i hinanden.

  • Resultater i word

    ODS RTF FILE= "C:\Janne\projekter\proj1\descp anal.rtf";SYMBOL2 C=RED I=RQ;

    PROC GPLOT DATA=algimin;PLOT BMI*alder=1

    BMI*alder=2 /FRAME OVERLAY;RUN; QUIT;ODS RTF CLOSE;

    Alt hvad der står mellem ODS RTF FILE= og ODS RTFCLOSE; bliver kommer over i Word dokumentetC:\Janne\projekter\proj1\descp anal.rtf.

  • Resultater i Word - lidt pænere version

    ODS RTF FILE= "C:\Janne\descp anal.rtf" BODYTITLESTARTPAGE=NO STYLE=JOURNAL;ODS NOPROCTITLE;SYMBOL2 C =RED I=RQ;

    PROC GPLOT DATA=algimin;PLOT BMI*alder=1

    BMI*alder=2 /FRAME OVERLAY;RUN; QUIT;ODS RTF CLOSE;

  • Histogram med normalfordeling

    PROC UNIVARIATE DATA=a;VAR supar;HISTOGRAM supar/NORMAL;PROBPLOT supar/NORMAL(MU=est SIGMA=est);

    RUN;

  • Boxplot

    Data skal være sorteret efter X-variablen i PROC BOXPLOTPROC SORT DATA=a OUT=SortedBySex;

    BY blodtryk;RUN;PROC BOXPLOT DATA= SortedByBlodtryk;

    PLOT supar*blodtryk/ BOXSTYLE=SCHEMATIC;RUN;

  • Hvis hver datalinie tæller for flere personer

    PROC UNIVARIATE DATA=a;VAR alder;FREQ antal;HISTOGRAM alder/NORMAL;

    RUN;

    Her tæller hver datalinie for "antal" personer

  • Hvis hver datalinie tæller for flere personer

    PROC FREQ DATA=test;TABLE var1 var2 var3;WEIGHT antal;

    RUN;

    Her tæller hver datalinie for ’antal’ observationer/personer