SAS programmer til Proc Means indlæg af Per Andersen / Capgemini Danmark A/S Simpelt eksempel. * nulstiller output vindue og log vindue title1 "Simpel eksempel på brug af Proc Means" class salgskontor grossist output out=ny sum=total_ant total_pris proc print data=ny Tip 1. title * nulstiller title (eller flere) title1 "Tip 1, Benyt Proc Means til at beregne Quantiler" class grossist output out=ny2 sum=median_pris mean=total_pris p50=mean_pris proc print data=ny2 Tip 2. title title1 "Tip 2, Brug AUTONAME og AUTOLABEL options" label pris_ialt = 'Total pris' class grossist output out=ny3 sum= mean= p50= /autolabel autoname proc print data=ny3 proc contents data=ny3 noprint out=ny4 (keep=name label) proc print data=ny4 proc print data=ny3 l Tip 3.
title1 "Tip 3, Dan flere output dataset i en Proc Means" output out=tip3 sum= data testtyp9 set tip3 where _type_=9 * eller data testtyp9a set tip3 if _type_='1001'b /* bemærk at where ikke kan benyttes med BIT expression */ output out=tip3a sum= output out=tip3b(where=(_type_ = 9)) sum= Proc Means data=sugdk.kundedata2 noprint chartype missing output out=tip3c sum= output out=tip3d (where=(_type_ = '1001')) sum= Proc Means data=sugdk.kundedata2 noprint chartype missing output out=tip3e sum= output out=tip3f(where=(_type_ in('0000','1001'))) sum= Tip 4. title1 "Tip 4, Brug descendingtypes" Proc Means data=sugdk.kundedata2 noprint descendtypes chartype missing class grossist kundetype output out=tip4 sum= proc print data=tip4 Tip 5. title1 "Tip 5, Brug TYPES Statement til at begrænse class-kombination"
types () grossist * kundetype postnr * salgskontor postnr * salgskontor * grossist output out=tip5 sum= proc freq data=tip5 Tip 6. ptions nocenter nodate title1 "Tip 6, Brug DESCENDING og CLASS" Proc Means data=sugdk.kundedata2 noprint descending missing types () grossist * kundetype postnr * salgskontor postnr * salgskontor * grossist output out=tip6 sum= proc freq data=tip6 Tip 7. title1 "Tip 7, Brug IDGROUP til at danne rækker med" title2 "Extreme værdier fra input datasettet" class salgskontor/descending class kundetype var startdato output out=tip7 idgroup (max(startdato) out[2] (startdato)= maxstdato) idgroup (min(startdato) out[2] (startdato)= minstdato) sum= mean= /autoname proc print data=tip7 width=min Tip 8. title1 "Tip 8, Preloadfmt og Completetypes" proc format value $salgskontor '02000' = '02000 Roskilde' '02001' = '02001 Greve' '02002' = '02002 Køge' '02003' = '02003 Solrød'
'02004' = '02004 Havdrup' class salgskontor/preloadfmt var antal format salgskontor $salgskontor. output out=tip8 sum= mean= /autoname proc print data=tip8 proc format value $salgskontora '02000' = 'Roskilde' '02001' = 'Greve' '02002' = 'Køge' '02003' = 'Solrød' '02004' = 'Havdrup' Proc Means data=sugdk.kundedata2 noprint completetypes missing class salgskontor/preloadfmt order=freq var antal format salgskontor $salgskontora. output out=tip8a sum= mean= /autoname proc print data=tip8a Tip 9. title1 "Tip 9, Brug WAYS" ways 3 output out=tip9 sum= proc freq data=tip9 Tip 10. title "Tip #10 Multilabel format" proc format value $postnra (multilabel) 0001-4999 = 'København/Sjælland' 5000-5999 = 'Fyn' 6000-9999 = 'Jylland' value $postnrb (multilabel) 0001-4999 = 'København/Sjælland' 5000-5999 = 'Fyn' 6000-9999 = 'Jylland' 3700-3799 = 'Bornholm'
proc means data=sugdk.kundedata2 noprint completetypes nway missing class postnr/preloadfmt MLF order=formatted var antal output out=tip10 sum= format postnr $postnra. proc print data=tip10 proc means data=sugdk.kundedata2 noprint completetypes nway missing class postnr/preloadfmt MLF order=formatted var antal output out=tip10b sum= format postnr $postnrb. proc print data=tip10b Tip 11. title1 "Tip 11, Brug CLASSDATA dataset" data salgskontor length salgskontor $5 input salgskontor cards 02000 02001 02002 02003 02004 title1 "Tip 11, Brug CLASSDATA dataset" proc means data=sugdk.kundedata2 classdata=salgskontor noprint missing class salgskontor var antal output out=tip11 sum= proc print data=tip11 Tip 12. title1 "Eksempel 12, brug formater til summering" proc means data=sugdk.kundedata2 noprint class kundetype startdato format startdato yyq6. output out=eks12 sum=/autolabel autoname proc freq data=eks12 proc print data=eks12
Tip 13. title1 "Eksempel 13, NWAY option" proc means data=sugdk.kundedata2 noprint nway class kundetype startdato format startdato yyq6. output out=eks13 sum=/autolabel autoname proc freq data=eks13 proc print data=eks13 Sammen ligning Proc Sql og Proc Means. proc sql create table tip3sql as select postnr, salgskontor, grossist, kundetype, sum(antal) as antal_sum, sum(pris_ialt) as pris_ialt_sum, count(*) as records from sugdk.kundedata2 group by postnr, salgskontor, grossist, kundetype quit Proc Means data=sugdk.kundedata2 noprint missing nway output out=tip3nway sum= Kommentarer til programmerne, se i præsentationerne, hvor det hele bliver gennemgået. Per Andersen Capgemini Danmark A/S per.andersen@capgemini.com