HOOFDSTUK 3 ENKELE EENVOUDIGE RAPPORTEN .................................. 89 3.1 Het libname statement ................................................................................................................... 89 Algemene syntax voor het libname statement ........................................................................................... 89 Libname statement voor een excel bestand ............................................................................................... 90 3.2 Lijstrapporten via PROC PRINT en sorteren via PROC SORT ............................................... 92 Een eenvoudige lijst .................................................................................................................................. 92 Sorteren van observaties ........................................................................................................................... 96 Kolomtotalen genereren in proc PRINT ................................................................................................... 98 3.3 Frequentietabellen aanmaken ..................................................................................................... 102 Eendimensionale tabellen........................................................................................................................ 102 Kruistabellen genereren .......................................................................................................................... 104 Drie- of meerdimensionale tabellen genereren........................................................................................ 106 Plots maken met PROC FREQ................................................................................................................ 106 3.4 Beschrijvende statistieken opvragen ........................................................................................... 108 Meest eenvoudige PROC MEANS ......................................................................................................... 108 Andere statistieken opvragen .................................................................................................................. 109 Gegroepeerde analyse ............................................................................................................................. 110 Statistieken in een SAS bestand bewaren ................................................................................................ 113 3.5 Samenvattende tabellen via PROC TABULATE ...................................................................... 115 Basis instructies....................................................................................................................................... 115 Samenvattende tabellen maken met TABULATE .................................................................................. 118 3.6 Aanpassen van de lay-out van de output .................................................................................... 124 Titels en voetnoten plaatsen .................................................................................................................... 124 Het gebruik van SAS systeem opties ...................................................................................................... 125 Toekennen van labels aan variabelen ...................................................................................................... 128 Gebruik van formaten ............................................................................................................................. 129 Internationale formaten (nieuw vanaf SAS versie 9) .............................................................................. 133 Permanente labels en formaten (optioneel) ............................................................................................. 136 Zelf formaten maken via PROC FORMAT ............................................................................................ 139
INHOUD
ICTS FOOCES
88
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
89
Hoofdstuk 3 Enkele eenvoudige rapporten 3.1 Het libname statement Algemene syntax voor het libname statement In Hoofdstuk 1 werd behandeld hoe een referentie naar een SAS data library kan gemaakt worden via het ‘New Library’ venster dat je kan openen vanaf het Explorer venster. Een andere manier voor het definiëren van een library bestaat uit het inlassen van een LIBNAME statement in je SAS programma. Algemene vorm: LIBNAME libref ‘SAS-data-library’ ; libref SAS-data-library
is een zelf gekozen naam, max. 8 karakters is de directory ( PC, UNIX) waarnaar de libref dient te verwijzen (volledige pad)
Het LIBNAME statement is een globaal statement. Je hoeft dit slechts één keer op te geven om een referentie te leggen naar een bepaalde directory. De rest van de SAS sessie blijft deze referentienaam actief tenzij je zelf de libref wijzigt of je SAS afsluit. Om te kunnen werken met SAS datasets die permanent gestockeerd zijn, dien je telkens je SAS opstart eerst een referentie naar de directory waar de datasets staan te definiëren. Om dit te doen heb je nu de keuze; ofwel door middel van het ‘New Library’ venster of door het submitten van een LIBNAME statement.
Voorbeeld : Refereren naar de directory waar de cursus-voorbeelden staan via het LIBNAME statement. 1. Typ het LIBNAME statement in het Editor venster libname cursus ‘n:\data\jooghe\sas\basis\lesmateriaal’13 ; 2. Voer dit uit. 3. in het log venster verschijnt de boodschap dat de toekenning geslaagd is.
13
Dit is de directory die je opgeeft wanneer je werkt in de PC klassen. Werk je op je eigen computer, dan moet de directory waarin je de voorbeelden gecopieerd hebt worden opgegeven.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
90
Libname statement vo or een excel bestand In hoofdstuk 2 kwamen verschillende manieren aan bod om Excel bestanden in te lezen in SAS. Sinds SAS 9 is er echter nog een andere werkwijze. Het is nu ook mogelijk om een libname te laten verwijzen naar een Excel-bestand. SAS heeft al zeer lang libname engines die het mogelijk maken om bv. een connectie te leggen naar een Oracle database. Door deze engine worden Oracle tabellen gewoon gezien als SAS tabellen. Er wordt geen kopie gemaakt, er wordt rechtstreeks op de externe data gewerkt. De complexiteit van de communicatie tussen de externe databank en SAS zit achter de schermen verscholen in de libname engine. SAS heeft nu ook een libname engine ontwikkeld om Excel-bestanden op dezelfde manier te benaderen. Bv: Libname xls excel ‘n:\data\jooghe\sas\basis\lesmateriaal\OMZ_IN_REG.XLS’ Hier wordt de excel engine expliciet aangegeven. Maar indien het volledige excel bestand gespecifieerd is in het fysische path dan is dit slechts optioneel. Je kan dus gewoon Libname xls ‘n:\data\jooghe\sas\basis\lesmateriaal\OMZ_IN_REG.XLS’ schrijven. SAS herkend het als zijnde een excel bestand en zal een library aanmaken die alle werkbladen en ranges die in het excel bestand zitten, tonen als een SAS dataset in de xls library.
De naam van een excel werkblad wordt altijd gevolgd door een $. Dit zie je niet binnen excel, maar wel in de SAS Library. Het $-teken is geen geldig teken in de naam van een SAS dataset. Indien je dit zomaar gebruikt in je code zal je een foutmelding krijgen :
Voorbeeld : Libname xls ‘n:\data\jooghe\sas\basis\lesmateriaal\OMZ_IN_REG.XLS’ data omzet; set xls.blad1$; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
In de log : 2 3
data omzet; set xls.blad1$; 22 200 ERROR: File XLS.blad1.DATA does not exist. ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, -, :, ;, END, INDSNAME, KEY, KEYS, NOBS, OPEN, POINT, _DATA_, _LAST_, _NULL_. ERROR 200-322: The symbol is not recognized and will be ignored.
Om hier binnen SAS toch mee te kunnen werken moet je een name literal gebruiken. Dit wil zeggen dat je de naam tussen aanhalingstekens zet, direkt gevolgd door letter n. data omzet; set xls."blad1$"n; run; Er mag geen spatie staan tussen het aanhalingsteken en de letter n. De naam van een werkblad in Excel kan ook nog andere tekens bevatten die in SAS ongeldig zijn, bv spaties, beginnen met een cijfer, … Excel kent immers geen beperkingen. Ook die namen moeten als name literal behandeld worden. In het geval van spaties moeten deze nog eens tussen een extra paar aanhalingstekens gezet worden. "'naam van blad1$'"n; De lengte van de naam, inclusief quotes, indien er spaties in de naam zijn, en $-teken mag nog steeds slechts 32 lang zijn. Anders is het geen geldige SAS naam. De optie die je in een proc import kan gebruiken (usedate, scantime, mixed,…) kan je ook in het libname statement gebruiken. Wat kan de libname engine doen:
Nieuwe werkboek maken Nieuw werkblad maken, eventueel met een specifieke range Data schrijven naar een bestaande named range. Data lezen van een bestaand werkblad of named range. Data wissen van een werkblad of named range. Excel moet niet geinstalleerd zijn op de PC.
Wat kan de libname niet engine doen:
Werkblad hernoemen Werkbladen verwijderen uit een werkboek Werkboek verwijderen Formatteringen toepassen of veranderen Cellen die formules bevaten verwijderen Een formule schrijven in een cell.
ICTS FOOCES
91
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
92
3.2 Lijstrapporten via PROC PRINT en sorteren via PROC SORT Een eenvoudige lijst Gegevens van een SAS dataset kunnen weergegeven worden in een lijst via de PROC PRINT procedure. De meest eenvoudige vorm van de PRINT procedure is
PROC PRINT DATA = naam SAS-dataset ; RUN;
Default worden alle observaties en alle variabelen afgedrukt De kolom OBS wordt door SAS erbij geplaatst en geeft de observatienummers De variabelen worden getoond in de volgorde waarin ze gestockeerd zijn in de dataset
Afdrukken van de gegevens uit CURSUS.PATIENT 1. Typ onderstaand programma in het Editor venster proc print data = cursus.patient; run; 2. Voer het programma uit. Check het log venster op fouten en corrigeer indien nodig. 3. De resultaten van de PRINT procedure verschijnen in het output-venster: Output : Obs
Opname Nummer
Opname Datum
Opname Aard
1 2 3 4 5 6 7 8 9 10
319582 336818 416842 416891 416966 416974 416982 416990 428441 441469
11/05/90 22/05/90 27/09/90 30/09/90 18/10/90 28/11/90 22/10/90 22/10/90 14/07/90 23/07/90
2 2 2 2 2 5 5 5 2 5
Ontslag Datum 13/12/90 20/12/90 26/10/90 19/11/90 03/11/90 05/12/90 24/10/90 24/10/90 20/11/90 10/11/90
Ontslagaard
geslacht
leeftijd
1 1 1 1 1 1 1 1 4 1
M M V V V V V M M M
73 62 88 86 82 70 22 16 43 59
4. Ga terug naar het Editor venster en voeg de optie NOOBS toe aan het PROC PRINT statement om de kolom met observatienummers te onderdrukken. proc print data = cursus.patient noobs; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
93
5. Voer terug uit. In de output is de eerste kolom verdwenen.
Variabelen selecteren Om slechts een deel van de variabelen af te drukken kan het VAR statement gebruikt worden. De algemene vorm is
VAR variabele(n) ; Waarbij de variabelen worden opgesomd (gescheiden door een blanco). Het VAR statement typ je onder het PROC PRINT statement en boven het RUN statement.
(vervolg vorige oefening ) 6. Voeg het VAR statement toe aan de PROC PRINT step: proc print data = cursus.patient ; var geslacht leeftijd ontslagdatum opnameaard; run; 7. Voer het programma uit en bekijk de output. Alleen de variabelen die werden opgegeven worden afgedrukt in de volgorde waarin ze werden opgesomd in het VAR statement.
Obs
geslacht
leeftijd
1 2 3 4 5 6 7 8 9 10
M M V V V V V M M M
73 62 88 86 82 70 22 16 43 59
Ontslag Datum 13/12/90 20/12/90 26/10/90 19/11/90 03/11/90 05/12/90 24/10/90 24/10/90 20/11/90 10/11/90
Opname Aard 2 2 2 2 2 5 5 5 2 5
Observaties selecteren Gebruik het WHERE statement om de procedure uit te voeren op een selectie van de dataset
WHERE expressie ; waarbij de expressie bestaat uit een opeenvolging van operatoren, variabelen, constanten of functies.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
94
Constructie van de WHERE expressie Het WHERE statement selecteert observaties door de waarde van een variabele te vergelijken met een constante of met de waarde van een andere variabele. Om een conditie op te bouwen gebaseerd op een karaktervariabele dien je
de waarde van de karaktervariabele tussen quotes te plaatsen de waarden op exact dezelfde wijze op te geven als ze in de dataset gestockeerd zijn (kleine letters, hoofdletters)
Om een conditie op te bouwen gebaseerd op een datumvariabele dien je
datumconstanten steeds onder de vorm ‘DDMMMJJJJ’D weer te geven: bijvoorbeeld ‘03MAR1999’D
Mogelijke vergelijkingsoperatoren:
symbool = of eq ^= of ne > of gt < of lt >= of ge <= of le
betekenis gelijk aan niet gelijk aan groter dan kleiner dan groter of gelijk aan kleiner of gelijk aan
Voorbeeld where geslacht = ‘M’; where opnameaard ^= 3; where leeftijd > 30; where opnamedatum < ‘01JAN1990’D where opnamenummer ge 400000 ; where leeftijd <= 60 ;
Samengestelde WHERE expressies Het is mogelijk om observaties te selecteren die gebaseerd zijn op meerdere condities. Hiervoor kunnen de logische operatoren worden aangewend: logische operatoren:
symbool AND of & OR of |
betekenis en ; indien aan beide condities voldaan is, is aan de samengestelde expressie voldaan of ; indien aan één van beide condities voldaan is, is aan de samengestelde conditie voldaan
Voorbeelden:
where geslacht = ‘V’ and leeftijd >= 60 ;
op meerdere waarden van eenzelfde variabele testen: where opnameaard = 1 or opnameaard
= 2 ;
kan korter als where opnameaard in (1,2)
gebruik haken om de volgorde waarin de condities dienen te worden geëvalueerd te bepalen:
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
where geslacht = ‘V’ and (opnameaard = 1 or opnameaard = 2 ); wordt als 1° geëvalueerd
wordt als 2° geëvalueerd
(vervolg oefening) 8. Voeg het WHERE statement toe aan de PROC PRINT step. proc print data = cursus.patient ; var geslacht leeftijd ontslagdatum opnameaard; where opnameAard = 5 and geslacht = 'M' ; run; 9. Voer het programma uit en bekijk de resultaten in het output venster:
Obs 8 10
ICTS FOOCES
geslacht M M
leeftijd 16 59
Ontslag Datum 24/10/90 10/11/90
Opname Aard 5 5
95
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
96
Sorteren van observaties PROC PRINT toont de observaties in de volgorde waarin ze gestockeerd zijn in de dataset. Om de gegevens te sorteren op basis van de waarden van een variabele moet de SORT procedure eerst uitgevoerd worden voordat de PRINT procedure wordt uitgevoerd. De SORT procedure is eenvoudig qua syntax:
PROC SORT DATA = SAS dataset BY variabele(n); RUN;
;
De DATA = en OUT= opties specifiëren de input en de output dataset. Als je de DATA= optie niet opgeeft zal SAS de laatst aangemaakte dataset sorteren. Laat je OUT = weg, dan wordt de originele dataset overschreven door de gesorteerde versie. De variabelen die je opgeeft in het BY statement worden de BY variabelen genoemd. Met één BY variabele sorteert SAS de observaties op basis van de waarden van die variabele. Met meerdere BY variabelen sorteert SAS volgens de eerste variabele en binnen elke groep die zo ontstaat wordt gesorteerd volgens de tweede variabele, enz. Alle observaties die dezelfde waarde hebben voor de BY variabele worden een BY groep genoemd. De procedure sorteert default van klein naar groot of van A naar Z; missing values worden aanzien als de kleinste waarde. Om te sorteren in dalende volgorde geef je het woord DESCENDING op voor de naam van de variabele in het BY statement.
sorteervolgorde voor numerieke variabelen: missing, neg. Getallen, nul, positieve getallen sorteervolgorde voor karakter variabelen (PC, UNIX) blanko, spec. tekens, cijfers, hoofdletters, kleine letters blank ! " # $ % & ' ( ) * + , - . /0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z[ \] ˆ_ abcdefghijklmnopqrstuvwxyz{}~ SAS 9.2 bevat nieuwe opties om een meer taalkundige vorm van sorteren te bekomen. Kijk verder bij de sorteeropties.
Er zijn meerdere redenen om de SORT procedure uit te voeren buiten het sorteren van de observaties voor afdruk in bepaalde volgorde met PROC PRINT. Bij het combineren van meerdere SAS datasets tot één dataset bijvoorbeeld moeten de gegevens op voorhand gesorteerd worden. Ook bij het gebruik van PROC steps met een BY statement (uitvoeren van analyses per groep) moeten de gegevens gesorteerd zijn volgens de BY variabele. Bijgevolg dient in dit geval voorafgaandelijk een PROC SORT te worden uitgevoerd.
Druk een gesorteerde lijst af van de patiënten naar dalende leeftijd. 1. Schrijf een PROC SORT voor het sorteren en schrijf de gesorteerde versie weg naar een nieuw tijdelijk bestand PATIENT_TEMP. Voeg een PROC PRINT toe om de inhoud van de gesorteerde dataset te bekijken:
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
97
proc sort data = cursus.patient out = patient_temp ; by descending leeftijd; run; proc print data = patient_temp ; var leeftijd geslacht opnamedatum ontslagdatum ; run; 2. Voer het programma uit. De SORT procedure geeft geen output in het output venster, maar zegt wel in het log scherm dat de sortering gelukt is. 3. Output van de PROC PRINT step: Opname
Ontslag Obs 1 2 3 4 5 6 7 8 9 10
leeftijd
geslacht
88 86 82 73 70 62 59 43 22 16
V V V M V M M M V M
Datum 27/09/90 30/09/90 18/10/90 11/05/90 28/11/90 22/05/90 23/07/90 14/07/90 22/10/90 22/10/90
Datum 26/10/90 19/11/90 03/11/90 13/12/90 05/12/90 20/12/90 10/11/90 20/11/90 24/10/90 24/10/90
Nog enkele nuttige opties bij het PROC SORT statement :
De DATECOPY optie copieert de datum van de aanmaak en de laatste wijziging van het originele bestand naar de gesorteerde versie ( kan niet gebruikt worden in combinatie met de OUT= optie) De NODUPKEY optie gooit observaties met dezelfde waarde voor de BY variabele weg. De DUPOUT= optie laat toe deze dubbels te stockeren in een aparte dataset. De DUPOUT= optie kan eveneeens gecombineerd worden met de NODUPRECS optie dewelke identiek dezelfde records verwijderd uit het gesorteerd bestand en deze in de dataset stockeert die je na de DUPOUT= optie hebt opgegeven.
De SORT procedure heeft in SAS 9.2 nog enkele nieuwe opties bijgekregen die zeer nuttig kunnen zijn : De PRESORTED zorgt er voor dat de procedure eerst controleert of de dataset reeds gesorteerd is. Je kan deze optie dus best gebruiken op plaatsen waar je vermoed dat de dataset gesorteerd is, maar je er toch niet zeker van bent. Voor grote datasets kan dit een aanzienlijke tijdswinst opleveren. De SORTSEQ optie laaat toe om te sorteervolgorde te beinvloeden zodat ze de taalregels volgt. Bv. niet eerst de hoofdletters en dan alle kleine letters sorteren maar hoofdletters en kleine letters door elkaar op basis van alfabetische volgorde. Je kan ook bepalen dat cijfers in karakter variabelen gesorteerd worden volgens hun numerieke waarde en niet volgens de karakter waarde. Onderstaand voorbeeld verduidelijk een en ander.
Sorteer namen en adressen op een taalkundige wijze. 1. Schrijf een PROC SORT voor het sorteren van een bestand met naam- en adresgegevens (cursus.adres) op de klassieke wijze en druk
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
98
proc sort data = cursus.adres out = sorted ; by adres; run; proc print; run; 2. Pas de procedure nu aan dat ze taalkundig gaat sorteren. Om correct taalkundig te sorteren moet SAS ook weten in welke taal er gewerkt wordt. Daarom moeten de locale optie correct gezet worden op nederlands-België. Options locale=nl_BE; proc sort data = cursus.adres out = sorted sortseq=linguistic; by adres; run; proc print; run; 3. Pas de procedure vervolgens aan dat ze ook rekening houd met de numerieke waarde van cijfers in de karakter variabele. proc sort data = cursus.adres out = sorted sortseq=linguistic(numeric_collation=on); by adres; run; proc print; run; 4. Vergelijk de output van de drie procedures en kijk goed naar de verschillen.
Kolomtotalen genereren in proc PRINT
Voor bepaalde variabelen ( een kost, een tijdsduur, …) kan het nuttig zijn een totaal te berekenen van de waarden van die variabele over de observaties heen. Dit kan door gebruik te maken van het SUM statement in de PRINT procedure 14. De variabelen waarvoor sommen gewenst zijn geven we op na het SUM keyword. Dit kunnen uiteraard alleen numerieke variabelen zijn.
SUM variabele(n) ;
14
Ook de MEANS procedure kan gebruikt worden voor het berekenen van sommen van variabelen, samen met andere statistieken. De PRINT procedure drukt wel de individuele observaties af, wat de MEANS procedure niet doet. De MEANS procedure wordt behandeld in paragraaf 3.4.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
99
Verpleegduur en totale verpleegduur afdrukken per patiënt
1. De dataset CURSUS.PATIENT_DUUR uit de voorbeeldenmap bevat onder andere per patiënt de verpleegduur in aantal dagen.
2. Schrijf volgende PROC PRINT step voorzien van een SUM statement met daarin de variabele VERPLEEGDUUR: proc print data = cursus.patient_duur ; sum verpleegduur; run;
4. Voer het programma uit en bekijk de resultaten: Obs
Opname Nummer
1 2 3 4 5 6 7 8 9 10
319582 336818 416842 416891 416966 416974 416982 416990 428441 441469
geslacht M M V V V V V M M M
leeftijd
verpleegduur
73 62 88 86 82 70 22 16 43 59
217.00 213.00 0.30 0.51 0.17 0.80 0.30 0.30 0.13 111.00 ============ 543.51
Subtotalen Wensen we nu het aantal verpleegdagen te kennen voor mannen en vrouwen apart dan dienen we de variabele GESLACHT op te geven in een BY statement in de PROC PRINT step.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
100
proc print data = cursus.patient_duur; by geslacht; sum verpleegduur; run; Het BY statement zal ervoor zorgen dat voor elke nieuwe waarde van de BY variabele ( hier geslacht) een nieuwe onderdeel in de output begint waarin het totaal wordt gepresenteerd voor die waarde van de BY variabele. Opdat deze PROC PRINT foutloos zou lopen, moeten de gegevens voorafgaandelijk gesorteerd worden volgens de BY variabele. Het uiteindelijk programma zal er bijgevolg als volgt uitzien: proc sort data = cursus.patient_duur out = temp ; by geslacht ; run; proc print data = temp; by geslacht; sum verpleegduur; run; Hierbij de output waarbij boven aan elk onderdeel de waarde van de BY variabele wordt getoond: ------------------------------- geslacht=M --------------------------------
Obs 1 2 3 4 5 -------geslacht
Opname Nummer
leeftijd
verpleegduur
319582 336818 416990 428441 441469
73 62 16 43 59
217.00 213.00 0.30 0.13 111.00 -----------541.43
------------------------------- geslacht=V --------------------------------
Obs 6 7 8 9 10 -------geslacht
Opname Nummer
leeftijd
verpleegduur
416842 416891 416966 416974 416982
88 86 82 70 22
0.30 0.51 0.17 0.80 0.30 -----------2.08 ============ 543.51
Indien de BY-variabele ook als ID-variabele gebruikt wordt, dan verschijnt het observatienummer niet meer in de output maar wordt de variabele uit het ID statement als identificatie voor de observaties gebruikt en uiterst links afgedrukt. proc sort data = cursus.patient_duur out = temp ; by geslacht ; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
101
proc print data = temp ; by geslacht; id geslacht ; sum verpleegduur; run;
geslacht M
Opname Nummer
leeftijd
verpleegduur
319582 336818 416990 428441 441469
73 62 16 43 59
217.00 213.00 0.30 0.13 111.00 -----------541.43
416842 416891 416966 416974 416982
88 86 82 70 22
0.30 0.51 0.17 0.80 0.30 -----------2.08 ============ 543.51
-------M V
-------V
SUMLABEL is een nieuwe optie in SAS 9.2 . Gebruik van deze optie zorgt ervoor dat de label van de by-variabele wordt afgedrukt op de sum-lijn ipv de naam van de variabele. proc print data = temp sumlabel; by geslacht; sum verpleegduur; label geslacht=”Subtotaal geslacht”; run; -------------------------Subtotaal geslacht=M --------------------------------
Obs 1 2 3 4 5 -----------------Subtotaal geslacht
ICTS FOOCES
Opname Nummer
leeftijd
verpleegduur
319582 336818 416990 428441 441469
73 62 16 43 59
217.00 213.00 0.30 0.13 111.00 -----------541.43
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
102
3.3 Frequentietabellen aanmaken Een frequentietabel voor één variabele is een lijst van aantallen dewelke weergeven hoeveel observaties er teruggevonden worden in de dataset per waarde van die variabele. Naast ééndimensionale tabellen, kunnen ook twee of meerdere variabelen gekruist worden. De FREQ procedure genereert frequentietabellen
Eendimensionale tabellen De syntax van de FREQ procedure voor ééndimensionale tabellen is
PROC FREQ DATA = SAS dataset ; TABLES variabele(n); RUN;
Voor elke variabele opgegeven in het TABLES statement zal een frequentietabel worden aangemaakt.
1. De SAS dataset CURSUS.VLAAMSEGEZINNEN uit de voorbeeldenmap bevat een steekproef van 200 Vlaamse gezinnen. 2. Bekijk de inhoud en het beschrijvend gedeelte van de dataset. 3. Bereken het aantal gezinnen naar nationaliteit van het gezinshoofd en naar opleidingsniveau van het gezinshoofd. proc freq data = cursus.vlaamsegezinnen; tables nationaliteit onderwijsniveau ; run;
4. Output ( in html ):
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
103
SAS toont voor elke waarde van de variabele die voorkomt: (1) de frequentie, (2) het percentage dat deze frequentie vertegenwoordigt ten opzichte van het totaal aantal observaties, (3) de cumulatieve frequentie zijnde de frequentie van die waarde en alle waarden erboven en (4) het cumulatief percentage.
Standaard worden de verschillende categorieën of klassen in de tabel gesorteerd van klein naar groot. Om de klassen in een andere volgorde te verkrijgen dient de ORDER= optie te worden toegevoegd aan het PROC FREQ statement: Syntax ORDER = DATA | FORMATTED | FREQ | INTERNAL DATA
in volgorde waarin ze in de dataset voorkomen
FORMATTED
sorteert volgens de geformatteerde waarden
FREQ
geordend volgens dalende frequentie
INTERNAL
default, gesorteerd volgens de waarden van de variabele
(vervolg oefening) 5. De tabel naar onderwijsniveau maar naar dalende frequentie : proc freq data = cursus.vlaamsegezinnen order = freq; tables onderwijsniveau; run; 6. Output:
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
104
Kruistabellen genereren Om tweedimensionale tabellen aan te maken volstaat het om de SAS variabelen in het TABLES statement te kruisen door er een asterisk (*) tussen te plaatsen. Syntax: TABELS statement voor kruistabellen: TABLES variabele-1 * variabele-2 < *… variabele-n> ; waarbij voor 2-dimensionale tabellen variabele-1 de rijen weergeeft variabele-2 de kolommen weergeeft
Kruistabel van nationaliteit met onderwijsniveau. 1. Schrijf een TABLES statement met een asterisk tussen beide variabelen proc freq data = cursus.vlaamsegezinnen ; tables onderwijsniveau*nationaliteit; run; Opmerking: Het is mogelijk om meerdere tabellen op te vragen binnen één TABLES statement, door gewoon een blanco te laten tussen de verschillende tabellen. Binnen één PROC FREQ kunnen ook meerdere TABLES statements onder elkaar geplaatst worden. 2. Output in html van de kruistabel:
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
105
De cellen van de tabel tonen respectievelijk (1) de frequentie, (2) het percentage ten opzichte van het totaal aantal observaties, (3) het rijpercentage zijnde het percentage ten opzichte van het rijtotaal en (4) het kolompercentage zijnde het percentage ten opzichte van het kolomtotaal. Onderstaande opties in het TABLES statement kunnen gebruikt worden voor het onderdrukken van informatie die default in elke cel wordt weergegeven. Opties in het TABLES statement worden voorafgegaan door een schuine streep (/). NOFREQ
geen frequenties rapporteren
NOPERCENT
geen percentages rapporteren
NOROW
geen rijpercentages rapporteren
NOCOL
geen kolompercentages rapporteren
Gebruik de optie CROSSLIST om de output in de vorm van een lijst weer te geven in plaats van in de vorm van een kruistabel. Geef de optie MISSING op in het TABLES statement om missing values op te nemen in de tabel. Default worden deze niet meegeteld. Geef de optie OUT = in het TABLES statement om de variabele, de frequenties en de percentages in een SAS dataset te bewaren. Het TABLES statement hieronder zal een (tijdelijke) SAS dataset aanmaken die de frequenties bevat. Dit kan nuttig zijn als je de frequenties verder wil analyseren met behulp van andere procedures. tables onderwijsniveau*nationaliteit / out =
ICTS FOOCES
freqgezinnen;
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
106
De inhoud van de dataset FREQGEZINNEN wordt hieronder weergegeven in een VIEWTABLE venster:
Drie- of meerdimensionale tabellen genereren De uitbreiding naar drie- of meerdimensionale tabellen is eenvoudig te bekomen door het toevoegen van extra variabelen en een ster aan het TABLES statement. Voegen we de variabele GETROUWDPAAR uit de dataset CURSUS.VLAAMSEGEZINNEN toe aan het TABLES statement dan wordt de lay-out van de tabel als volgt bepaald: niveau’s (pagina dimensie) ^
tables getrouwdpaar * onderwijsniveau * nationaliteit ; ^ rijen
+
^ kolommen
Per waarde van de variabele GETROUWDPAAR begint een nieuw onderdeel in de output. Elk onderdeel bevat een kruistabel van ONDERWIJSNIVEAU (in de rijen) en NATIONALITEIT (in de kolommen) voor de desbetreffende waarde van GETROUWDPAAR.
Plots maken met PROC FREQ Met SAS 9.2 kan je nu ook oa. frequentie plots maken. Het maken van grafieken valt niet binnen de inhoud van deze kursus, maar vermits het nieuw is in SAS 9.2 wordt het hier toch vermeld. Voordat je dit kan doen moet je wel ODS GRAPHICS aktiveren. In hoofdstuk 4 wordt Output Delivery System verder behandeld. ODS Graphics is een recente optie die toelaat om grafieken aan te maken vanuit statistische procedures zoals bv. PROC FREQ. In dit geval is het voldoende om een plots= optie toe te voegen aan het table statement. Een freqplot en een cumfreqplot is een mogelijke keuze. Voor meer geavanceerde statistieken die met PROC FREQ worden berekend zijn er nog andere plots. Hiervoor wordt naar de documentatie verwezen. Per plot kunnen nog een aantal opties gezet worden, het type, de schaal, orientatie, … . ODS GRAPHICS ON; proc freq data = cursus.vlaamsegezinnen ; tables onderwijsniveau nationaliteit/plots=all;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
107
run; proc freq data = cursus.vlaamsegezinnen ; tables onderwijsniveau nationaliteit/plots=freqplot(type=dotplot scale=percent orient=vertical); run; proc freq data = cursus.vlaamsegezinnen ; tables onderwijsniveau*nationaliteit/plots=all; run; proc freq data = cursus.vlaamsegezinnen ; tables onderwijsniveau*nationaliteit/plots=freqplot(toway=stacked); run;
Voorbeeld van een plot :
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
108
3.4 Beschrijvende statistieken opvragen Meest eenvoudige PROC MEANS Beschrijvende statistieken zoals het gemiddelde, de variantie, het minimum en maximum,... geven een eerste samenvatting van de gegevens uit een SAS dataset. Deze kunnen opgevraagd worden met de MEANS procedure. De meest eenvoudige vorm is
PROC MEANS DATA = SAS dataset ; VAR variabele(n); RUN;
De variabelen worden opgesomd in het VAR statement en kunnen alleen numeriek zijn. Door het VAR statement weg te laten worden statistieken berekend voor alle numerieke variabelen in de dataset.
Vlaamse gezinnen dataset. 1. Schrijf volgende PROC MEANS step voor beschrijvende statistieken van het aantal personen en van het inkomen. proc means data = cursus.vlaamsegezinnen ; var aantal_personen inkomen; run; 2. Resultaten na uitvoer: The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Aantal_personen 200 2.5600000 1.2745676 1.0000000 6.0000000 Inkomen 200 64984.10 37555.41 17850.00 283000.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
In zijn meest eenvoudige vorm worden vijf kengetallen afgedrukt N
het aantal niet missing observaties voor die variabele
MEAN
het (rekenkundig) gemiddelde
STD
de standaard deviatie
MIN
het minimum
MAX
het maximum
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
109
Andere statistieken opvragen Andere statistieken, meer dan 30 in totaal, kunnen opgevraagd worden door deze toe te voegen als extra optie in het PROC MEANS statement: PROC MEANS DATA = SAS dataset < statistische keywords> ; VAR variabele(n); RUN; Mogelijkheden voor statistische keywords CLM CSS CV KURTOSIS LCLM MAX MEAN MIN MODE N NMISS RANGE SKEWNESS STDDEV / STD STDERR SUM SUMWGT UCLM USS VAR
Tweezijdige betrouwbaarheidsgrenzen voor het gemiddelde Som van gekwadrateerde waarden gecorrigeerd voor het gemiddelde Variatie coëfficiënt Welving Eenzijdige betrouwbaarheidsgrens links van het gemiddelde Maximum waarde Rekenkundig gemiddelde Minimum waarde Meest voorkomende waarde (Nieuw in SAS 9.2) Aantal observaties niet gelijk aan missing Aantal observaties met missing value Range Scheefheid Standaarddeviatie Standaard fout op het gemiddelde Som Som van de gewichten Eenzijdige betrouwbaarheidsgrens rechts van het gemiddelde Som van gekwadrateerde waarden Variantie
Kwantielen MEDIAN / P50 P1 P5 P10 Q1 / P25 Q3 / P75 P90 P95 P99 QRANGE
Mediaan of 50ste percentiel 1ste percentiel 5de percentiel 10de percentiel Eerste kwartiel of 25ste percentiel Derde kwartiel of 75ste percentiel 90ste percentiel 95ste percentiel 99ste percentiel Verschil tussen derde en eerste kwartiel:Q3-Q1
Toetsen van hypothesen: PROBT T
p-waarde behorende bij de t-test voor het gemiddelde waarde van de toetsingsgrootheid voor de t-test
( vervolg vlaamse gezinnen) 3. Vraag voor de variabele AANTAL_PERSONEN de mediaan, het eerste en derde kwartiel op: proc means data = cursus.vlaamsegezinnen median Q1 Q3; var aantal_personen ; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
110
4. In de output worden nu alleen de statistieken getoond die expliciet werden opgevraagd The MEANS Procedure Analysis Variable : Aantal_personen Lower Upper Median Quartile Quartile ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 2.0000000 2.0000000 3.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
5. Gebruik de optie MAXDEC = n om het aantal decimalen te specifiëren proc means data = cursus.vlaamsegezinnen median Q1 Q3 maxdec = 1; var aantal_personen ; run; 6. Output: The MEANS Procedure Analysis Variable : Aantal_personen Lower Upper Median Quartile Quartile ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 2.0 2.0 3.0 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
Gegroepeerde analyse Analyses per groep van observaties kunnen gemaakt worden door gebruik te maken van het BY statement net zoals we gezien hebben bij de PROC PRINT. Hiervoor moeten de gegevens vooraf gesorteerd volgens de BY variabele. Het CLASS statement binnen de PROC MEANS laat meteen gegroepeerde analyse toe, vooraf sorteren hoeft niet. CLASS variabele(n); Zowel numerieke als karaktervariabelen kunnen opgegeven worden als klasse variabele.
Gemiddeld inkomen naar nationaliteit en aantal personen in het gezin. 1. Submit een PROC MEANS met een CLASS statement waarin zowel AANTAL_PERSONEN als NATIONALITEIT worden opgegeven. proc means data = cursus.vlaamsegezinnen mean median; var inkomen ; class aantal_personen nationaliteit; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
111
2. Per combinatie van de klasse-variabelen worden beschrijvende statistieken getoond: The MEANS Procedure Analysis Variable : Inkomen Aantal_ N personen Nationaliteit Obs Mean Median ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 belg 46 35842.17 30000.00 nietbelg 2
belg nietbelg
3
belg nietbelg
4
belg nietbelg
5
belg
1
48000.00
48000.00
61
65289.02
47000.00
2
57000.00
57000.00
40
67698.75
65200.00
1
48450.00
48450.00
28
91305.36
84350.00
2
35000.00
35000.00
18
94105.56
84650.00
6 belg 1 126600.00 126600.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
Net zoals in de FREQ procedure kan ook hier de ORDER = optie aangewend worden in het CLASS statement om de volgorde van de categorieën te bepalen. Meerdere CLASS statements zijn mogelijk indien een andere volgorde nodig is voor de verschillende klasse-variabelen.
Het TYPES statement laat toe zelf combinaties van klasse-variabelen op te geven waarvoor PROC MEANS beschrijvende statistieken moet berekenen.
3. Vul het programma aan met een TYPES statement om beschrijvende statistieken op te vragen per waarde van AANTAL_PERSONEN enerzijds en per combinatie van AANTAL_PERSONEN en NATIONALITEIT anderzijds. De variabelen die in een TYPES statement gebruikt worden moeten voordien in een CLASS statement gedeclareerd worden. In dit voorbeeld gebruiken we een andere sorteervolgorde voor de weergave van de klassen van de variabele AANTAL_PERSONEN, vandaar worden twee aparte CLASS statements gesubmit (programma HOOFDSTUK3_MEANSTYPES.SAS) proc means data = cursus.vlaamsegezinnen mean median ; var inkomen ; class nationaliteit ; class aantal_personen/ order = freq ; types aantal_personen aantal_personen*nationaliteit ; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
4. De output : The MEANS Procedure Analysis Variable : Inkomen Aantal_ N personen Obs Mean Median ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 2 63 65025.87 47000.00 1
47
36100.85
30000.00
3
41
67229.27
65200.00
4
30
87551.67
82850.00
5
18
94105.56
84650.00
6 1 126600.00 126600.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
Analysis Variable : Inkomen Aantal_ N Nationaliteit personen Obs Mean Median ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ belg 2 61 65289.02 47000.00
nietbelg
1
46
35842.17
30000.00
3
40
67698.75
65200.00
4
28
91305.36
84350.00
5
18
94105.56
84650.00
6
1
126600.00
126600.00
2
2
57000.00
57000.00
1
1
48000.00
48000.00
3
1
48450.00
48450.00
4 2 35000.00 35000.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
ICTS FOOCES
112
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
113
Statistieken in een SAS bestand bewaren In sommige gevallen kan het nuttig zijn om de beschrijvende statistieken in een nieuwe SAS dataset te bewaren voor verdere analyse of samenvoeging met andere gegevens. Hiervoor kan het OUTPUT statement van de PROC MEANS gebruikt worden 15. OUTPUT OUT = naamSASdataset keyword1 = naam1 keyword2 = naam2 … ; of OUTPUT OUT = naamSASdataset keyword1 =
keyword2 = … / autoname ;
De keywords zijn dezelfde als diegenen die men kan opgeven in het PROC MEANS statement. Elk keyword dient te worden gevolgd door een = teken. Ofwel geef je een naam op na het = teken, dit wordt dan de naam van de variabele in de output dataset die die statistiek zal bevatten. Ofwel geef je geen namen en gebruikt je de optie autoname. SAS kent in dat geval zelf namen toe; de naam is een samenstelling van de oorspronkelijke variabelenaam en het statistisch keywoord.
Kwartielen van het inkomen gegroepeerd naar onderwijsniveau en nationaliteit bewaren in een SAS dataset. 1. Inkomen wordt in een VAR statement gedeclareerd. Gezien statistieken per onderwijsniveau en per nationaliteit gevraagd worden, declareren we deze in een CLASS statement. Het OUTPUT statement geeft de opdracht om de statistieken p50, p25, p75 en QRANGE te bewaren in het bestand KWARTIELEN. De variabele-namen waarin deze statistieken moeten terechtkomen worden expliciet opgegeven. (HOOFDSTUK3_MEANSOUTPUT.SAS) proc means data = cursus.vlaamsegezinnen ; var inkomen ; class onderwijsniveau nationaliteit; output out = kwartielen p50=mediaan p25=eerste_kwartiel p75=derde_kwartiel qrange = interkwartielafstand ; run; 2. Voer uit en dubbel klik vanuit het Explorer venster op het nieuwe bestand KWARTIELEN dat je kan terugvinden in de WORK bibliotheek indien het programma correct heeft gelopen:
15
In Hoofdstuk 4 wordt nog een andere methode gezien, namelijk via het Output delivery systeem, die ook toelaat de output te bewaren in een nieuwe SAS dataset.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
3. Vraag net dezelfde statistieken op maar laat SAS zelf de variabele namen kiezen door de autoname optie te gebruiken (minder typwerk !) proc means data = cursus.vlaamsegezinnen ; var inkomen ; class onderwijsniveau nationaliteit; output out = kwartielen p50= p25= p75= qrange = / autoname; run; 4. Dubbel klik op het bestand KWARTIELEN geeft nu:
ICTS FOOCES
114
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
115
3.5 Samenvattende tabellen via PROC TABULATE De TABULATE procedure kan gebruikt worden voor het maken van samenvattende tabellen met betrekking tot gegevens. In feite kunnen de statistieken of frequenties die je via TABULATE opvraagt ook via andere SAS procedures, zoals MEANS, FREQ of PRINT bekomen worden, maar de TABULATE procedure levert mooiere tabellen en biedt vele lay-out mogelijkheden. Er bestaat een apart SAS handboek dat alleen over de TABULATE procedure gaat. In deze paragraaf raken we de basis statements en mogelijkheden van TABULATE aan. De syntax is ietwat anders. Via een aantal voorbeelden trachten we deze duidelijk te maken.
Basis instructies
Tabellen met één variabele
Voorbeeld 1: 1. Start met een leeg Editor venster. Bekijk de dataset VLUCHTEN uit de voorbeeldenmap. Deze bevat vluchtgegevens over vlieglijnen in de USA. Typ onderstaand programma over in de Editor. De libref CURSUS dient te verwijzen naar de map met voorbeeld-datasets. proc tabulate data = cursus.vluchten ; class type_vlucht ; table type_vlucht*n ; run; 2. In het output venster verschijnt een tabel met het aantal binnenlandse vluchten en het aantal internationale vluchten naast elkaar weergegeven. „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ Type_vlucht ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ Bin ‚ Int ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ N ‚ N ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ 426.00‚ 196.00‚ Šƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Voorbeeld 2: 3. Wijzig in het TABULATE programma de ster (*) in een komma en voer terug uit. proc tabulate data = cursus.vluchten ; class type_vlucht ; table type_vlucht,n ; run;
4. Deze tabel geeft ook het aantal binnenlandse en het aantal internationale vluchten, alleen staan ze nu onder elkaar:
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
116
„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ N ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Type_vlucht ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚Bin ‚ 426.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Int ‚ 196.00‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Ten eerste hebben we een CLASS statement gebruikt waarin we aangeven dat we een klasseindeling willen maken volgens de variabele TYPE_VLUCHT. De waarden van de variabele vormen de onderverdeling in klassen. Variabelen die we declareren in een CLASS statement worden klasse-variabele(n) genoemd. Deze kunnen karakter of numeriek zijn. In het TABLE statement geven we aan hoe de eigenlijke tabel er moet uitzien. In voorbeeld1 wordt de variabele TYPE_VLUCHT gekruist (sterretje) met N, waardoor frequenties zullen gerapporteerd worden per waarde van TYPE_VLUCHT en dat wordt gepresenteerd in een ééndimensionale tabel waarbij de waarden van TYPE_VLUCHT in kolommen staan. table type_vlucht*n
;
^ kruis variabele met n
De N-statistiek is de default statistiek, dus table type_vlucht
;
is hetzelfde als table type_vlucht*n
;
In voorbeeld 2 werd de tabel geconstrueerd door gebruik te maken van een komma : scheiding van dimensies
table type_vlucht ,
rijen
n
;
kolommen
Ook deze rapporteert aantallen per type vlucht, maar nu in een tweedimensionale tabel. De rijen zijn de types van de vlucht en in de kolom staat de N-waarde( = de frequentie). De komma geeft met andere woorden de scheiding van de dimensies aan.
Voeren we nog een derde voorbeeld uit.
1. Typ onderstaande TABULATE over en voer uit. proc tabulate data = cursus.vluchten ; var vertraging ; table vertraging*mean ; run;
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
117
2. Deze tabel rapporteert één getal, het gemiddelde van de variabele VERTRAGING (over alle observaties uit de dataset):
„ƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ Vertraging ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ Mean ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ 4.06‚ ŠƒƒƒƒƒƒƒƒƒƒƒƒŒ
In het VAR statement worden variabelen opgegeven waarvoor een berekening moet worden uitgevoerd. We noemen dit analyse-variabele(n) en deze kunnen bijgevolg alleen numeriek zijn. In het TABLE statement construeren we de tabel door de analyse-variabele te kruisen (sterretje) met de gewenste statistiek. Alle statistieken die in PROC MEANS mogelijk zijn kunnen hier ook opgevraagd worden. De default statistiek is de SUM statistiek Bijgevolg is table vertraging ; hetzelfde als schrijven table vertraging*sum
;
Na deze elementaire voorbeelden kunnen we de basisinstructies van de TABULATE procedure samenvatten:
PROC TABULATE DATA = SAS dataset ; CLASS klasse-variabele(n); VAR analyse-variabele(n) ; TABLE rij-expressie, kolom-expressie ; RUN; Alleen de kolom-expressie is verplicht in het TABLE statement. een expressie is van de vorm : klasse-variabele*N
( n is default )
PCTN voor percentages analyse-variabele*SUM
(SUM is default)
Andere statistieken : MEAN, MEDIAN, STD, VAR, Q1, Q3, …… (alle statistieken van PROC MEANS)
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
118
Samenvattende tabellen maken met TABULATE Met de kennis van de zonet geschetste basis-instructies kunnen we al een heel eind op weg voor het maken van meer samenvattende tabellen omtrent de gegevens. Deze worden aan de hand van geleide oefeningen geïllustreerd.
Twee-en driedimensionale tabellen
Een tweedimensionale tabel met een indeling naar de vertraging ( variabele CATEGORIE) in de rijen van de tabel en een indeling naar type vlucht (TYPE_VLUCHT) in de kolommen van de tabel. De frequentie dient te worden uitgezet. 1. Een indeling naar TYPE_VLUCHT en naar CATEGORIE wordt gevraagd, dus beide variabelen dienen we te declareren in een CLASS statement. De variabele CATEGORIE komt voor de komma in het TABLE statement (rijen)en TYPE_VLUCHT erna (kolommen). We kruisen ofwel CATEGORIE ofwel TYPE_VLUCHT met de Nstatistiek want er worden frequenties gevraagd (of we geven niets op want N is de default). (HOOFDSTUK3_tabulate.SAS) proc tabulate data = cursus.vluchten ; class categorie type_vlucht; table categorie, type_vlucht * n ; run;
2. Output: „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Type_vlucht ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Bin ‚ Int ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ N ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Categorie ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚0 min. ‚ 151.00‚ 29.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚1-10 min. ‚ 216.00‚ 125.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚11+ min. ‚ 59.00‚ 42.00‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
De statistiek mag slechts in één van beide dimensies opgegeven worden.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
119
Een tabel met de gemiddelde vertraging (variabele VERTRAGING) uitgezet per bestemming. 1. Declareer VERTRAGING in een VAR statement want hiervan wensen we een gemiddelde te berekenen. Declareer BESTEMMING in een CLASS statement want we wensen een indeling volgens bestemming. Gezien de variabele BESTEMMING een 10-tal waarden aanneemt zal een tabel met BESTEMMING in de rijdimensie overzichtelijker zijn. In de kolomdimensie kruisen we VERTRAGING met de MEAN statistiek. (HOOFDSTUK3_tabulate2.SAS) proc tabulate data = cursus.vluchten ; class bestemming; var vertraging; table bestemming, vertraging*mean ; run;
2. Output: „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Vertraging ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Mean ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Bestemming ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚Chicago ‚ 2.68‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Copenhagen ‚ 5.68‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dallas ‚ 3.91‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Frankfurt ‚ 7.80‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚London ‚ 5.63‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Los Angeles ‚ 3.44‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Paris ‚ 7.47‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Toronto ‚ 6.28‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Washington ‚ 2.45‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Een driedimensionale tabel die de gemiddelde vertraging per bestemming en per type vlucht weergeeft. 1. Vertrek van vorig programma. Voeg TYPE_VLUCHT toe aan het CLASS statement. Breid het TABLE statement uit met een extra dimensie ( extra komma) en de variabele TYPE_VLUCHT (HOOFDSTUK3_tabulate3.sas)
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
proc tabulate data = cursus.vluchten ; class bestemming type_vlucht; var vertraging; table type_vlucht, bestemming, vertraging*mean /condense; run; De optie CONDENSE in het TABLE statement ( wordt opgeven na een / teken), zorgt ervoor dat niet telkens een nieuwe pagina wordt begonnen in de output, maar dat de tabellen zoveel mogelijk op één pagina worden geplaatst.
2. Output: Type_vlucht Bin „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Vertraging ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Mean ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Bestemming ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚Chicago ‚ 2.68‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dallas ‚ 3.91‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Los Angeles ‚ 3.44‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Washington ‚ 2.45‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Type_vlucht Int „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Vertraging ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Mean ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Bestemming ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚Copenhagen ‚ 5.68‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Frankfurt ‚ 7.80‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚London ‚ 5.63‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Paris ‚ 7.47‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Toronto ‚ 6.28‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Geef 2 komma’s op om driedimensionale tabellen aan te maken :
TABLE pagina-expressie, rij-expressie, kolom-expressie / ; optie condense zet de verscheidene 2-dim. tabellen op één pagina.
ICTS FOOCES
120
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
121
Kruisen, concateneren en groeperen van variabelen en statistieken Binnen eenzelfde dimensie kunnen variabelen en keywords gekruist, geconcateneerd of gegroepeerd worden. Hieronder nog enkele extra mogelijkheden die je zelf kan uittesten. Alleen de TABLE statements worden getoond. Uiteraard dien je steeds de ganse PROC TABULATE step te submitten.
Kruisen gebeurt door middel van een *
(andere statements blijven hetzelfde)
TABLE
type_vlucht * bestemming, vertraging*mean
;
in elkaar genestelde klassen
Concateneren gebeurt door een blanco tussen te laten
TABLE type_vlucht * bestemming, vertraging*mean ;
vertraging*std kolommen worden naast elkaar geplaatst
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
122
Concatenatie met het keyword ALL geeft totalen voor klasse-variabelen:
TABLE type_vlucht * bestemming all, vertraging*mean vertraging*std ;
Groeperen gebeurt door het plaatsen van haken
TABLE type_vlucht * bestemming, vertraging*(mean
std) ; andere schikking van de kolomhoofdingen
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
123
Opmerking : In vorige paragrafen werden een aantal procedures behandeld. Een overzichtslijst van alle beschikbare procedures binnen SAS/BASE kan bekomen worden vanaf de Help. Kies vanaf de centrale menubalk
> Help > SAS Help and Documentation > SAS Procedures > Procedures
>
SAS Products > Base SAS
Voor snelle hulp over een bepaalde procedure: Zet je cursor op de naam van de procedure bv: PROC FREQ en druk dan op F1
Een lijst van beschikbare procedures binnen de andere modules van SAS kunnen vanaf hier eveneens opgevraagd worden. Met de funktietoets F1 kan de help ook opgeroepen worden. Indien de cursor op de naam van een procedure gepositioneerd is, dan wordt de help voor deze procedure automatisch opgezocht.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
124
3.6 Aanpassen van de lay-out van de output Titels en voetnoten plaatsen Ondertussen zal je reeds opgemerkt hebben dat SAS boven aan elke output van een procedure de titel “The SAS System” plaatst. Je kan deze titel wijzigen, uitbreiden met meerdere titels, anders centreren,…. Ook is er de mogelijkheid om voetnoten onder aan de output de plaatsen. Default plaatst SAS geen voetnoten. Het plaatsen van titels en voetnoten kan in de programmatuur door het inlassen van een TITLE en FOOTNOTE statement en dit vóór de PROC step waarvan je de output met titels en voetnoten wil voorzien. De syntax van het TITLE en FOOTNOTE statement is TITLEn ‘tekst’ ; FOOTNOTEn ‘tekst’;
n is een getal tussen 1 en 10 title “tekst” is idem aan title1 “tekst” footnote “tekst” is idem aan footnote1 “tekst” vergeet de quotes niet ( ‘ of “ ) !! u mag ook het titles of footnotes window gebruiken
Voorbeelden :
title1 "Aantal vluchten naar dag in de week"; title2 "Globale frequentieverdeling"; Footnote1 “ uit vlucht-registratie” ; Titels en voetnoten zijn globale statements. Ze worden buiten een DATA of PROC STEP geplaatst. Titels en voetnoten blijven actief tot het einde van de SAS sessie of tot dat je ze wijzigt.
Alle titels en voetnoten verwijderen kan via title ; footnote;
Om bijvoorbeeld een nieuwe TITLE2 statement te definiëren, geef je een nieuw TITLE2statement op. Dit vervangt het vorige TITLE2-statement. Alle TITLEn-statements met n groter dan 2 worden geannuleerd !
Voorbeelden: PROC PRINT CODE title1 “De eerste lijn”; title2 “De tweede lijn”; proc print ; run;
ICTS FOOCES
Titels in output De eerste lijn De tweede lijn
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
title2 “De volgende lijn”; proc print; run; title1 “De toplijn” ; proc print; run; title3 “De derde lijn”; proc print ; run; title ; proc print; run;
125
De eerste lijn De volgende lijn De toplijn
De toplijn De derde lijn
Bij HTML output worden titels altijd onder elkaar geplaatst. Indien bijvoorbeeld TITLE2 leeg is zal er geen blanco lijn geplaatst worden tussen TITLE1 en TITLE3.
Het gebruik van SAS systeem opties SAS systeem opties zijn parameters die effect hebben op de werking van het SAS systeem, hoe SAS werkt, hoe de output eruit ziet, hoeveel geheugen gebruikt wordt, hoe fouten worden behandeld, … Een aantal opties dienen specifiek voor de controle van de output van procedures en zullen we hier illustreren. Opties worden gewijzigd of opgeven in een OPTIONS statement. OPTIONS optie(s) ; Het is eveneens een globaal statement en heeft bijgevolg effect op alle PROC steps die volgen na het opgeven van het OPTIONS statement. Enkele opties specifiek voor de pagina-opmaak van procedure output zijn PAGENO=n NUMBER | NONUMBER
Begint pagina’s te nummeren met het nummer n al dan niet weergeven van paginanummers in de output
DATE | NODATE
al dan niet weergeven van datum en tijd boven aan elke pagina
DTRESET | NODTRESET
CENTER | NOCENTER
(vanaf SAS versie 9) DTRESET er wordt een update van de datum en het tijdstip verricht in de titels van de SAS output en de SAS log bij het uitvoeren van procedures NODTRESET er wordt geen update verricht van de datum en het tijdstip in de titels an de SAS output en de SAS log bij het uitvoeren van procedures. De datum en het tijdstip van het opstarten van SAS wordt telkens getoond. Dit is de default. al dan niet centreren van de output
LINESIZE = n of LS = n
opgeven van het max. aantal karakters per lijn voor het log en het output scherm ( n tussen 64 en 256 )
PAGESIZE = n of PS = n
opgeven van het aantal lijnen per pagina van de SAS output.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
126
Deze opties hebben geen effect op HTML output uitgenomen de DATE en de CENTER optie.
Gebruik van titels en SAS systeem opties 1. Open het programma HOOFDSTUK3_OPTIES.SAS uit de voorbeeldenmap in het Editor venster. Opdat dit programma correct kan uitgevoerd worden moet de libref CURSUS bestaan en verwijzen naar de voorbeeldenmap. Bestaat deze nog niet, submit dan eerst een LIBNAME statement zoals uitgelegd in paragraaf 3.1. 2. Voer het programma uit. options nodate
pageno=1 nocenter ls = 80;
title1 "Aantal vluchten naar dag in de week"; title2 "Globale frekwentieverdeling"; proc freq data= cursus.vluchten; tables dag ; run; title2 "met onderverdeling naar het type vlucht" ; proc tabulate data = cursus.vluchten; class dag type_vlucht; table dag , type_vlucht * (n pctn ) ; run;
3. Bekijk het effect van de opties in het Output venster: Aantal vluchten naar dag in de week Globale frekwentieverdeling The FREQ Procedure Cumulative Cumulative Dag Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 81 13.02 81 13.02
ICTS FOOCES
1
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
2 3 4 5 6 7
79 71 82 102 104 103
12.70 11.41 13.18 16.40 16.72 16.56
160 231 313 415 519 622
25.72 37.14 50.32 66.72 83.44 100.00
Aantal vluchten naar dag in de week met onderverdeling naar het type vlucht „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Type_vlucht ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Bin ‚ Int ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ PctN ‚ N ‚ PctN ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dag ‚ ‚ ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ ‚ ‚1 ‚ 53.00‚ 8.52‚ 28.00‚ 4.50‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚2 ‚ 56.00‚ 9.00‚ 23.00‚ 3.70‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚3 ‚ 55.00‚ 8.84‚ 16.00‚ 2.57‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚4 ‚ 55.00‚ 8.84‚ 27.00‚ 4.34‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚5 ‚ 68.00‚ 10.93‚ 34.00‚ 5.47‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚6 ‚ 70.00‚ 11.25‚ 34.00‚ 5.47‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚7 ‚ 69.00‚ 11.09‚ 34.00‚ 5.47‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
In plaats van het OPTIONS statement uit te voeren kan je werken via het Options venster. Je kan dit oproepen via Tools Options System. De opties zijn ondergebracht in categorieën. Kijk bijvoorbeeld in de categorie ‘Log and procedure output control’ om de hierboven beschreven opties terug te vinden. Door rechts te klikken op de optie zelf, kan je ze wijzigen.
ICTS FOOCES
127
2
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
128
Toekennen van labels aan variabelen Indien geen labels werden opgegeven via de data step of via het View Columns venster worden de namen van SAS variabelen gebruikt in de output van de procedures. In plaats van de naam kan je een meer leesbare omschrijving afdrukken.
HTML output van PROC PRINT
output van PROC FREQ
Deze omschrijving geef je mee in een LABEL statement binnen de PROC STEP. Syntax :
LABEL variable-1=’omschrijving-1’ . . .
;
De omschrijvingen mogen max. 256 karakters bevatten. Uitzondering: bij het gebruik van het LABEL statement in de PROC PRINT moet nog eens extra de optie LABEL toegevoegd worden op het einde van het PROC PRINT statement.
Gebruik van het LABEL statement 1. Open het programma HOOFDSTUK3_LABELS.SAS uit de voorbeeldenmap in het Editor venster. Opdat dit programma correct kan uitgevoerd worden moet de libref CURSUS bestaan en verwijzen naar de voorbeeldenmap. Bestaat deze nog niet, submit dan eerst een LIBNAME statement zoals uitgelegd in paragraaf 3.1.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
129
2. Voer het programma uit. proc freq data= cursus.vluchten; label type_vlucht = 'Type van de vlucht’ ; tables type_vlucht; proc print data = cursus.vluchten(obs = 5) label ; var type_vlucht dag categorie ; label type_vlucht = 'Type van de vlucht ' dag = 'Dag in de week' categorie = 'Vertraging (in categorieën)' ; run; 4. Output van proc FREQ (output venster): The FREQ Procedure Type van de vlucht Type_ Cumulative Cumulative vlucht Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Bin 426 68.49 426 68.49 Int 196 31.51 622 100.00
5. Output van de PROC PRINT:
The SAS System
Obs 1 2 3 4 5
Type van de vlucht
Dag in de week
Bin Bin Bin Bin Bin
1 1 1 1 1
Vertraging ( in categorieen) 1-10 min. 1-10 min. 0 min. 0 min. 0 min.
Als je een LABEL statement gebruikt binnen een PROC STEP worden de labels alleen voor die PROC STEP gebruikt.
Je kan ook een LABEL statement opgeven binnen een DATA STEP. Dan blijven de labels permanent bewaard bij de variabelen en worden deze automatisch gebruikt door (bijna) alle procedures.
Gebruik van formaten Formaten controleren de wijze waarop waarden van variabelen worden weergegeven in de output van procedures.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
Om een formaat toe te passen op een variabele voeg je een FORMAT statement toe aan de PROC step. Syntax van het FORMAT statement:
FORMAT variabele(n) formaat. ;
Voorbeelden van FORMAT statements: Het FORMAT statement …
associeert …
format vertraging 5.2 ;
het numeriek formaat 5.2 met de numerieke variabele vertraging het numeriek formaat 5.2 met de numerieke variabele vertraging en het formaat 1.0 met de variabele dag het karakterformaat $20. met de variabelen bestemming en type_vlucht.
format vertraging 5.2 dag 1.0 ; format
bestemming type_vlucht $20.;
Voornaamste formaten: formaat w. $w. COMMAXw.
COMMAw.
EUROXw.
standaard numeriek formaat; schrijf over w posities waarvan d decimalen standaard karakter formaat schrijf getallen met een punt voor de duizendtallen en een komma als scheidingsteken voor de decimalen (Europese schrijfwijze) schrijf getallen met een komma voor de duizendtallen en een punt als scheidingsteken voor de decimalen (Amerikaanse schrijfwijze) schrijf getallen voorafgegaan door het eurosymbool
voorbeeld 8.2 $15. commax8.2
comma6.1
eurox10.
Welke lengte opgeven ?
Om bijvoorbeeld het getal 2030 te schrijven als 2.030 zijn 5 posities nodig. De punt van de duizendtallen telt mee als 1 positie. Het te gebruiken formaat is bijgevolg commax5. . commax5.
2.030 1 2 3 4 5
ICTS FOOCES
130
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
131
Als we het getal willen tonen met 2 decimalen , dus als 2.030,00 hebben we 8 posities nodig waarvan 2 na het decimale scheidingsteken commax8.2
2.030,00 1 2 3 4 5 6 7 8
Wensen we er tenslotte het Euro symbool voor te plaatsen, dan hebben we nog 1 extra positie nodig, dus wordt het formaat EUROX9.2: eurox9.2
€2.030,00 1 2 3 4 5 6 7 8 9
Anderzijds kunnen waarden worden afgerond door er een formaat op toe te passen. Bijvoorbeeld de waarde 27134.2864 wordt met het formaat 8.2 in het output venster getoond als 27134.29. Voorbeelden: Waarde van de variabele 27134.2864 27134.2864 27134.2864
formaat 12.2 commax12.2 eurox12.2
Resultaat in output 27134.29 27.134,29 €27.134,29
Datum formaten Wanneer je een SAS datum variabele afdrukt, zal SAS default de actuele waarde weergeven, dus het aantal dagen sinds 1 januari 1960. Aangezien dit niet leesbaar is, heeft SAS voorzien in een aantal datum-formaten waarmee we de datum terug in leesbare vorm kunnen weergeven. Een overzicht van de meest gebruikte formaten: FORMAAT DDMMYYxw. MMDDYYxw. YYMMDDxw. DATEw. DAYw. WORDDATE w.
Waarden voor w 2- 10 (default 8) 2- 10 (default 8) 2- 10 (default 8) 5-9 (default 7) 2-32 (default 2) 3-32 (default 8)
Mogelijkheden voor x: B C D N P
ICTS FOOCES
blanco als scheidingsteken dubbele punt (:) als scheidingsteken een koppelteken (-) als scheidingsteken geen scheidingsteken een punt als scheidingsteken
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
S
132
schuine streep (/) als scheidingsteken (default)
Voorbeelden: SAS datum variabele 11088 14853 14853 14853 14853 14853
formaat ddmmyys10. mmddyyd10. ddmmyyb8. DATE7. DAY5. WORDDATE12.
weergave in output 11/05/1990 08-31-2000 31 08 00 31AUG00 31 Aug 31, 2000
Als je een FORMAT statement gebruikt binnen een PROC STEP worden de formaten alleen bij de output van die PROC STEP gebruikt.
Je kan ook een FORMAT statement opgeven binnen een DATA STEP in een FORMAT of een PUT statement. Dan blijven de formaten permanent bewaard bij de variabelen en worden deze automatisch gebruikt in alle procedures.
Voorbeeld : 1. Gebruik de PROC PRINT step uit de vorige oefening. Vul deze aan met een FORMAT statement waarin een numeriek formaat wordt toegekend aan de variabele VERTRAGING. proc print data = cursus.vluchten(obs = 5) label ; format vertraging 5.2 ; var type_vlucht dag categorie Vertraging; label type_vlucht = 'Type van de vlucht ' dag = 'Dag in de week' categorie = 'Vertraging (in categorieën)' ; run; 2. De waarden van de variabele VERTRAGING worden afgedrukt over vijf posities waarvan twee decimalen. ( Let op: aan de interne stockage van de waarden verandert er niets).
Obs 1 2 3 4 5
ICTS FOOCES
Type van de vlucht
Dag in de week
Bin Bin Bin Bin Bin
1 1 1 1 1
Vertraging (in categorieën) 1-10 min. 1-10 min. 0 min. 0 min. 0 min.
Vertraging 8.88 8.42 -1.60 -7.64 -5.13
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
133
Internationale formaten (nieuw vanaf SAS versie 9) In combinatie met de LOCALE optie kunnen internationale formaten gebruikt worden. Zo wordt het mogelijk om de datum in het Nederlands uit te schrijven bij rapportering. Met de LOCALE optie kan men aangeven dat men conventies wenst te gebruiken die eigen zijn aan een taal-regio. Het gaat om conventies die te maken hebben met -
het formatteren en weergeven van datums en tijden
-
de gebruikte encoding (single byte coding / double byte coding)
-
regels voor het sorteren van strings
-
...
De LOCALE optie maakt deel uit van de National Language Support van SAS. Voor meer informatie omtrent NLS ; Vanuit het HELP scherm : SAS Help and Documentation Vanaf de CONTENTS tab ; selecteer SAS Products vervolgens SAS National Language Support (NLS) : User’s Guide
De default LOCALE setting is ENGLISH_UNITEDSTATES. Bij het uitschrijven van datums als tekst ( door middel van WORDDATX. formaat bijvoorbeeld) wordt de datum in het Engels weergegeven. Dit is de situatie zoals we ze kennen van versie 8.
1. Onderstaand programma gebruikt de default setting (English) voor de systeem optie LOCALE. (HOODSTUK3_LOCALE.SAS) data test; input datum ddmmyy8.; cards ; 01072005 ; run; data _null_ ; set test; file print; put datum ddmmyy10./ datum downame. / datum worddatx. / datum monname. ; run;
SAS output : 07/01/2005 Friday 7 January 2005 January
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
134
In het PUT statement van de DATA _NULL_ step wordt de datum met verscheidene formaten uitgeschreven. Het DOWNAME. formaat geeft de dag van de week (als tekst), het MONNAME. formaat geeft de maand ( als tekst) en het WORDDATX. formaat schrijft de ganse datum uit als tekst. In de output zien we dat ze in de Engelse taal worden uitgeschreven. 2. We wijzigen de LOCALE optie naar DUTCH ( via het OPTIONS statement of via het options venster). Daarna submitten we dezelfde SAS code. SAS 9 supporteert nieuwe internationale formaten voor het uitschrijven van datums in de taal die ingesteld is volgens de LOCALE optie. Hieronder een voorbeeld voor de DUTCH optie (HOOFDSTUK3_LOCALE2.SAS): options locale = dutch ; data test; input datum anydtdte.; cards ; 01072005 ; run; data _null_ ; set test; file print; put datum ddmmyy10./ datum NLDATEWN. / datum NLDATEW. / datum NLDATEMN. ; run; SAS output : 01/07/2005 vrijdag vrijdag 01 juli 2005 juli
De eerste twee kolommen uit onderstaande tabel geven een overzicht van de formaten die reeds voor versie 9 van SAS bestonden en die zonder wijziging van de LOCALE optie Engelstalige output geven. In de twee laatste kolommen worden de formaten weergegeven die nieuw zijn in versie 9 en die de datums uitschrijven in de taal die is in gesteld in de LOCALE optie. De vierde kolom toont de output die je verkrijgt bij instelling van LOCALE = DUTCH.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
ICTS FOOCES
135
Standaard formaat
Standaard output
Internationaal formaat.
Internationale Output ( LOCALE=DUTCH)
DATE9.
01JUL2005
EURDFDE9.
01jul2005
DATETIME.
01JUL05:08:30:00
EURDFDT. of NLDATM18. of NLDATM32.
01jul05:08:30:00 1- 7-05 08:30 01 juli 2005 08:30:00 uur
DDMMYY10.
01/07/2005
EURDFDD10.
01-07-2005
DOWNAME.
Friday
EURDFDWN. of NLDATEWN.
vrijdag vrijdag
MONNAME.
July
EURDFMN. of NLDATEMN.
juli juli
MONYY.
JUL05
EURDFMY.
jul05
WEEKDATX.
Friday, 1 July 2005
EURDFWKX. of NLDATEW18 NLDATEW32
vrijdag, 1 juli 2005 vr 01 jul 05 vrijdag 01 juli 2005
WORDDATX.
1 July 2005
EURDFWDX. of NLDATE.
1 juli 2005
WEEKDAY.
6
EURDFDN.
5
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
136
Permanente labels en formaten (optioneel)
Toekennen van permanente labels en formaten aan de VLUCHTEN dataset.
1. Open het programma HOOFDSTUK3_PERMLABEL.SAS uit de voorbeeldenmap. Dit programma bevat een DATA step die de vluchtgegevens inleest vanaf een ruw tekstbestand VLUCHTEN.TXT. 2. Pas indien nodig het INFILE statement aan door het juiste pad op te geven vanwaar het VLUCHTEN.TXT moet worden gelezen. De PROC SORT sorteert de dataset naar vertraging (grootste vertraging eerst). De PROC PRINT drukt de 10 vluchten met de grootste vertraging af. De PROC PRINT gebruikt de labels en het formaat automatisch omdat ze opgeslagen zijn in de dataset ( vandaar permanente labels en formaten). 3. Submit het programma. data vluchten ; infile 'n:\data\jooghe\sas\basis\lesmateriaal\vluchten.txt'; input categorie $ 1- 20 vertraging 28-30 dag 32 type_vlucht $ 35-38 Bestemming $ 40-65 ; format vertraging 5.2 ; label type_vlucht = 'Type van de vlucht ' dag = 'Dag in de week' categorie = 'Vertraging (in categorieën)' ; proc sort data = vluchten ; by descending vertraging ; run; proc print data= vluchten (obs = 10 ) label; var type_vlucht dag bestemming Vertraging; run;
4. Output :
Obs 1 2 3 4 5 6 7 8 9 10
ICTS FOOCES
Type van de vlucht Int Int Int Int Bin Bin Bin Bin Bin Int
Dag in de week
Bestemming
vertraging
4 1 4 1 1 3 1 2 5 2
London Copenhagen London Copenhagen Dallas Los Angeles Dallas Los Angeles Chicago Frankfurt
24.00 22.00 22.00 20.00 19.00 19.00 18.00 18.00 18.00 18.00
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
137
3. Kijk naar de Column Properties vanaf het Explorer venster of submit een PROC CONTENTS om te zien dat de labels en het formaat nu permanent bij de dataset horen. proc contents data=
vluchten;run;
Gedeelte van de output : -----Alphabetic List of Variables and Attributes----# Variable Type Len Pos Format Label ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 5 Bestemming Char 26 40 1 categorie Char 20 16 Vertraging (in categorieën) 3 dag Num 8 8 Dag in de week 4 type_vlucht Char 4 36 Type van de vlucht 2 vertraging Num 8 0 5.2
4. Gebruik een PROC TABULATE die de permanente labels gebruikt, maar die tijdelijk een ander formaat gebruikt voor de variabele VERTRAGING. proc tabulate data = vluchten ; class vertraging type_vlucht; format vertraging 5.0 ; table vertraging ,type_vlucht*( n pctn) ; run;
„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Type van de vlucht ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ Bin ‚ Int ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ PctN ‚ N ‚ PctN ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚vertraging ‚ ‚ ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ ‚ ‚-20 ‚ 1.00‚ 0.16‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-17 ‚ 2.00‚ 0.32‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-16 ‚ 3.00‚ 0.48‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-15 ‚ 2.00‚ 0.32‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-14 ‚ 6.00‚ 0.96‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-13 ‚ 1.00‚ 0.16‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-12 ‚ 5.00‚ 0.80‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-11 ‚ 2.00‚ 0.32‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-10 ‚ 1.00‚ 0.16‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-9 ‚ 3.00‚ 0.48‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-8 ‚ 5.00‚ 0.80‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-7 ‚ 10.00‚ 1.61‚ 2.00‚ 0.32‚
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-6 ‚ 7.00‚ 1.13‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-5 ‚ 10.00‚ 1.61‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-4 ‚ 9.00‚ 1.45‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-3 ‚ 20.00‚ 3.22‚ 4.00‚ 0.64‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-2 ‚ 29.00‚ 4.66‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚-1 ‚ 24.00‚ 3.86‚ 8.00‚ 1.29‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚0 ‚ 17.00‚ 2.73‚ 5.00‚ 0.80‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚1 ‚ 21.00‚ 3.38‚ 9.00‚ 1.45‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚2 ‚ 14.00‚ 2.25‚ 5.00‚ 0.80‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚3 ‚ 15.00‚ 2.41‚ 4.00‚ 0.64‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚4 ‚ 11.00‚ 1.77‚ 14.00‚ 2.25‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚5 ‚ 16.00‚ 2.57‚ 7.00‚ 1.13‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚6 ‚ 37.00‚ 5.95‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚7 ‚ 38.00‚ 6.11‚ 15.00‚ 2.41‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚8 ‚ 29.00‚ 4.66‚ 26.00‚ 4.18‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚9 ‚ 16.00‚ 2.57‚ 30.00‚ 4.82‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚10 ‚ 22.00‚ 3.54‚ 20.00‚ 3.22‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚11 ‚ 13.00‚ 2.09‚ 16.00‚ 2.57‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚12 ‚ 6.00‚ 0.96‚ 5.00‚ 0.80‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚13 ‚ 2.00‚ 0.32‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚14 ‚ 6.00‚ 0.96‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚15 ‚ 7.00‚ 1.13‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚16 ‚ 6.00‚ 0.96‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚17 ‚ 5.00‚ 0.80‚ 3.00‚ 0.48‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚18 ‚ 3.00‚ 0.48‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚19 ‚ 2.00‚ 0.32‚ .‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚20 ‚ .‚ .‚ 1.00‚ 0.16‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚22 ‚ .‚ .‚ 2.00‚ 0.32‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚24 ‚ .‚ .‚ 1.00‚ 0.16‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
ICTS FOOCES
138
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
139
Zelf formaten maken via PROC FORMAT Naast de standaard formaten die door SAS voorzien zijn is het mogelijk om zelf formaten te creëren via de FORMAT procedure. Deze kunnen net als de standaard formaten gebruikt worden bij het uitvoeren van procedures. Dit is vooral nuttig bij gecodeerde gegevens, bijvoorbeeld een variabele leeftijdscategorie waarbij tiener, volwassene en bejaarde gecodeerd worden als 1, 2 en 3. Of de variabele WEEKDAG in de VLUCHTEN dataset waarbij 1 staat voor zondag, 2 voor maandag enzovoort tot 7 voor zaterdag. Voor data-invoer en -verwerking zijn de codes makkelijk te hanteren, maar in rapporten presenteren we liever leesbare omschrijvingen in plaats van codes. Met behulp van de FORMAT procedure kunnen we zelf leesbare omschrijvingen hangen aan de codes, dus aan de waarden van de variabele. De procedure start altijd met het PROC FORMAT statement. Daarna volgen één of meerdere VALUE statements.
PROC FORMAT ; value naam-formaat
range1=’omschrijving1’ range2=’omschrijving2’ …;
RUN;
waarbij formaat naam
range omschrijvingen
is de naam van het formaat dat gecreëerd wordt De naam - moet beginnen met een $ voor karaktervariabelen met een letter of _ voor num. variabelen - mag max. 32 karakters lang zijn inclusief de $ voor karakter variabelen ( 32 karakters in versie9; 8 karakters in versie 8 ) - mag niet eindigen op een nummer - mag niet de naam zijn van een bestaand SAS formaat waarde ( of waarden) van de variabele die wordt toegekend aan de tekst aan de rechterkant van het =teken de omschrijving aan de rechterkant van het = teken Deze - mag max. 200 karakters lang - moet altijd tussen quotes geplaatst worden ( ‘ of “)
Hieronder enkele voorbeelden van geldige specificaties voor range1=’omschrijving1’ ‘V’=’Vrouw’ 1,3,5,7 =’oneven’ 50000-high =’te duur’ 13-<20 =’tiener’ 0<- high=’positief en niet nul’ other = ‘slechte data’ Karakterwaarden moeten tussen quotes geplaatst worden. Indien meer dan één waarde in de range valt, moeten deze gescheiden worden door komma’s, indien het gaat om een interval kan een streepje (-) gebruikt worden. De keywords LOW en HIGH kunnen gebruikt worden om de laagste en de hoogste waarden van de variabele aan te duiden. Het kleiner dan teken (<) dient om de laagste of hoogste waarden van een interval uit te sluiten. Het OTHER keyword tenslotte geeft een formaat aan alle waarden die nog niet in het VALUE statement aan bod kwamen.
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
140
Aanmaken en gebruiken van eigen formaten op de VLUCHTEN dataset 1. Maak de Enhanced Editor leeg en open het programma HOOFDSTUK3_FORMATEN.SAS. De PROC FORMAT step creëert drie formaten, een numeriek formaat WEEKDAG (voor de variabele DAG), een numeriek formaat GROEP_V (voor de variabele VERTRAGING) en een karakterformaat $TYPE (voor de variabele TYPE_VLUCHT). Vervolgens worden deze formaten toegepast in een TABULATE procedure. Merk op dat de namen van de formaten in de VALUE statements niet gevolgd worden door een punt, maar in het FORMAT statement wel. 2. Submit het programma proc format ; value weekdag 1 = 'Zondag' 2 = 'Maandag' 3 = 'Dinsdag' 4 = 'Woensdag' 5 = 'Donderdag' 6= 'Vrijdag' 7 = 'Zaterdag' ; value groep_v low - 0 = 'geen' 0 - 15 = 'minder dan 15 min. ' 15 -high = 'meer dan 15 min.' ; value $type 'Bin' = 'Binnenlandse' 'Int' = 'Internationale' ; run; proc tabulate data = cursus.vluchten format = 8.2; format dag weekdag. vertraging groep_v. type_vlucht $type. ; class dag vertraging type_vlucht; table type_vlucht ,dag,vertraging; run;
2. De FORMAT procedure creëert geen output in het output scherm, maar geeft in het log venster wel aan of de formats zijn aangemaakt. 3. De output van PROC TABULATE met gebruik van onze eigen formaten: Type_vlucht Binnenlandse „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Vertraging ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ minder dan ‚Meer dan 15 ‚ ‚ ‚ geen ‚ 15. min. ‚ min. ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ N ‚ N ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dag ‚ ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ ‚Zondag ‚ 18.00‚ 31.00‚ 4.00‚
ICTS FOOCES
Fout! Gebruik het tabblad Start om Heading 1 toe te passen op de tekst die u hier wilt weergeven. Fout! Gebruik het tabblad Start om Heading 2 toe te passen op de tekst die u hier wilt weergeven.
141
‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Maandag ‚ 17.00‚ 36.00‚ 3.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dinsdag ‚ 20.00‚ 32.00‚ 3.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Woensdag ‚ 20.00‚ 33.00‚ 2.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Donderdag ‚ 26.00‚ 38.00‚ 4.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Vrijdag ‚ 25.00‚ 43.00‚ 2.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Zaterdag ‚ 25.00‚ 43.00‚ 1.00‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ Type_vlucht Internationale „ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ Vertraging ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ minder dan ‚Meer dan 15 ‚ ‚ ‚ geen ‚ 15. min. ‚ min. ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ N ‚ N ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dag ‚ ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ ‚Zondag ‚ 7.00‚ 19.00‚ 2.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Maandag ‚ 2.00‚ 20.00‚ 1.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Dinsdag ‚ 3.00‚ 12.00‚ 1.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Woensdag ‚ 7.00‚ 18.00‚ 2.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Donderdag ‚ 1.00‚ 33.00‚ .‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Vrijdag ‚ 4.00‚ 28.00‚ 2.00‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Zaterdag ‚ 5.00‚ 27.00‚ 2.00‚ Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
OTHER gebruiken bij numerieke formaten heeft als gevolg dat missing values worden meegenomen in deze categorie.
LOW gebruiken bij numerieke formaten heeft als gevolg dat missing values niet worden meegenomen.
LOW gebruiken bij karakter formaten heeft als gevolg dat missing values wel worden opgenomen.
De formaten die op deze manier worden aangemaakt
zijn tijdelijke formaten die op het einde van de SAS sessie verloren gaan. Zie in de SAS Onlinedoc voor het aanmaken van permanente formaten.
ICTS FOOCES