Peter Kellberg. Rundt om Danmarks Statistiks makroer. Design, Standardisering, Teknik



Relaterede dokumenter
Peter Kellberg. Det vidste du ikke om et EG projekt!

SAS-programmering med sikkerhedsnet: FUTS (Framework for Unit Testing SAS programs)

Klog på SAS seminar, december 2013 Hvordan skjules password i loggen ved brug af macro, Svend Bang, Københavns Universitet

Mænd, Mus og Metadata

SAS formater i Danmarks Statistik

Deltag i en quiz: Test din viden i SAS -programmering

Anvendelse af Model- View koncept i SAS Stored Processer

PUT og INPUT funktionerne

en fælles opsætning af SAS som grundlag for samarbejde. Jesper Michelsen, Risikostyring Modeller

Moderne SAS-programmering på webben med SAS Studio. Georg Morsing SAS Institute

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.

MPH specialmodul i epidemiologi og biostatistik. SAS. Introduktion til SAS. Eksempel: Blodtryk og fedme

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

INTRODUKTION TIL SAS

Appelsiner, bananer og citroner

β = SDD xt SSD t σ 2 s 2 02 = SSD 02 f 02 i=1

Kursus i varians- og regressionsanalyse Data med detektionsgrænse. Birthe Lykke Thomsen H. Lundbeck A/S

Tips og tricks til Proc Means. Per Andersen

PICTURE formater. Klog på SAS 15. marts 2012

Google Maps og SAS/GRAPH software

Hvorfor SAS Kort intro til SAS

Kort intro til SAS. Efterår Janne Petersen Judith L Jacobsen Lene Theil Skovgaard

Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)

Jobafvikling i batch under Windows

Introduktion til funktioner, moduler og scopes i Python

Introduktion til SAS macro language

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Tips og tricks til Proc Means. Per Andersen Senior IM Consultant Dong Energy, Group IT, Trading IT, Analytics

Variansanalyse i SAS. Institut for Matematiske Fag December 2007

Dan dine egne SAS - funktioner med PROC FCMP

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

k normalfordelte observationsrækker (ensidet variansanalyse)

Hvad er en terminalserver?

Interaktionsudvikling

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

Kommentarer til øvelser i basalkursus, 2. uge

Lineær regression i SAS. Lineær regression i SAS p.1/20

Naturvidenskabelig Bacheloruddannelse Forår 2006 Matematisk Modellering 1 Side 1

Projekt DATA step view

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

Automatisering af dataarbejde 2.2

GIS indlæsning af kreditorer og betalingsform. Brugervejledning 1.0

Vi ønsker at konstruere normalområder for stofskiftet, som funktion af kropsvægten.

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark

Hjemmeopgave. I bedes benytte sidste side fra denne opgavetekst i udfyldt stand som forside på jeres opgavebesvarelse. Siden findes også på nettet.

VA 7.4 Tips og Tricks. Torben Skov

Afdeling for Anvendt Matematik og Statistik Januar Regressionsanalyse i SAS 2. Regressionsanalyse med GLM Sammenligning af regressionslinier

Løsning til opgave i logistisk regression

Dannelse af PDF dokumenter

R E D C A P M A N U A L. Importér data til REDCap fra CSV-fil. Opbyg din eksisterende database i REDCap Version 1.0

Hent filoplysninger fra billeder og filer

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse

Lineær og logistisk regression

Kontrol-strukturer i PHP

EVALUERING I SURVEYXACT TRIN FOR TRIN

Analyse af tid-til-event data i store kohorte studier analyseret med SAS/STAT

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 05_01.xls

Reeksamen i Statistik for Biokemikere 6. april 2009

' #$*# ' # #) * #& #& ' # #* #, #$--

Man indlæser en såkaldt frequency-table i SAS ved følgende kommandoer:

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Introduktion til SQL queries

Besvarelse af juul2 -opgaven

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 05_06.xls

Variansanalyse i SAS 1. Institut for Matematiske Fag December 2007

Niveauer af abstrakte maskiner

Styrelsen for Arbejdsmarked og Rekruttering Brugervejledning SharePoint abonnementer. Version: 1.3 Seneste opdatering: 9.

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Dynamiske Web-applikationer i SAS-portalen

Løsning til øvelsesopgaver dag 4 spg 5-9

Data management Vejledning til ph.d. studerende og andre v/ Willy Karlslund

Afdeling for Teoretisk Statistik August 2004 Institut for Matematisk fag Aarhus Universitet. Jørgen Granfeldt INTRODUKTION TIL SAS 1

Anvendt Statistik Lektion 9. Variansanalyse (ANOVA)

Udarbejdet af: Frontal Lobe teamet, Jonathan Lawaetz og Joachim Skovbo Dato for opdatering: 27/05/18. Indholdsfortegnelse

Vejledning til brug af tilskudsmodulet i FMK

Logistisk regression. Basal Statistik for medicinske PhD-studerende November 2008

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

Brugervejledning til Højkvalitetsdokumentationen og Dialogforummet på Danmarks Statistiks hjemmeside

Algoritmer og invarianter

EVALUERING I SURVEYXACT TRIN FOR TRIN

Nintex Workflow UK/DK

Programmering i C. Lektion oktober 2008

Brugervejledning til DHF's onlinesystem

Introduktion til UNGIAARHUS

Multipel regression. M variable En afhængig (Y) M-1 m uafhængige / forklarende / prædikterende (X 1 til X m ) Model

ChatBot. Introduktion. Scratch. Nu skal du lære hvordan du programmerer din egen talende robot! Arbejdsliste. Test dit Projekt.

Dagens Temaer. Test for lineær regression. Test for lineær regression - via proc glm. k normalfordelte obs. rækker i proc glm. p. 1/??

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Lær Python dag 1 - modul 1

Programmering i C. Lektion september 2009

Anvendt Statistik Lektion 9. Variansanalyse (ANOVA)

Økonometri 1 Forår 2006 Ugeseddel 11

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 04.xls

Transkript:

Peter Kellberg Rundt om Danmarks Statistiks makroer Design, Standardisering, Teknik SAS Forum 2009

Ét makrobibliotek ca 50 makroer, vi selv har lavet mange andre fx CLAN Autocall makroer en makro er et SAS-program begge med samme navn Nemt at administrere

Ét makrobibliotek

SASAUTOS er 3 ting en SAS Environment variabel som er defineret i CFG-filen et FILEREF (FILENAME) som initialt har foldere fra SAS E V en OPTION hvor man kan bruge SASAUTOS default fileref (filename).

Hvorfor lave en makro? Har vi en makro, der...? dække et behov (reaktivt eller proaktivt) Er det svært/besværligt at lave i SAS-kode? Ja! Bliver tingene gjort mere rigtigt så? ja!

Bordet fanger En nyttig og god makro indgår hurtigt i produktionen! Så er det måske ikke så nemt lige at ændre væsentligt på funktionaliteten Find nogle at sparre med under udviklingen aftest, aftest, aftest... helst af andre Feedback? hører man intet, er det som oftest et godt tegn!

Et billede på at lave en makro Selve opgaven Triviel Fejlsøgning Tjek af forudsætninger Udfyldte parametre? Navnestandarder Findes libref? Findes SASdatasæt? Findes variabler? Findes en Windows-mappe? osv

DST_MERGE makroen, join af data Triviel Fejlsøgning Tjek af forudsætninger 600 linjer Selve opgaven 60 linjer

DST_MERGE makroen LEFT RIGHT ONLYLEFT MATCH ONLYRIGHT

DST_MERGE makroen 4316 %dst_merge(left=minedata.navne, 4317 right=minedata.loen, 4318 leftkey=pnr, 4319 rightkey=pnr, 4320 match=salgsoplysninger, 4321 onlyleft=personer_uden_salg, 4322 onlyright=ukendte_personer); -------------- Her kommer resultatet af parringen -------------- NOTE: There were 11 observations read from the data set MINEDATA.NAVNE. NOTE: There were 23 observations read from the data set MINEDATA.LOEN. NOTE: The data set WORK.SALGSOPLYSNINGER has 19 observations and 4 variables. NOTE: The data set WORK.PERSONER_UDEN_SALG has 1 observations and 4 variables. NOTE: The data set WORK.UKENDTE_PERSONER has 4 observations and 4 variables. NOTE: DATA statement used (Total process time): real time 0.34 seconds cpu time 0.03 seconds -----------------------------------------------------------------

DST_MERGE makroens features Nøgler behøver ikke hedde det samme Man kan selv angive et fælles navn til output datasæt Stille krav om et 100% match Man kan keepe/droppe variabler fra LEFT og RIGHT Variabler med samme navn i LEFT og RIGHT bliver suffixet med hhv _LEFT og _RIGHT så begge kommer med

Almen praksis Slank loggen Meddelelser: options nonotes nosource;...... options notes source; %put ERROR: Du skal angive...; %put WARNING: Følgende variabler..; %put NOTE: Der blev fundet &count datasæt, som...; Giv signal om, at makroen er kørt

Fejlsøgning, %RETURN %if &left= %then %do; %put; %put ERROR: Angiv navnet på et datasæt (LEFT=).; %put; options notes source; %return; %end;... %if &left= %then %do; %put; %put ERROR: Angiv navnet på et datasæt (LEFT=).; %put; %goto slut; %end;... %slut: options notes source; %mend;

Fejlsøgning %macro erblank(arg); %sysevalf(%superq(arg)=,boolean) %mend; %if %erblank(cprnummer) %then...; Paper 022-2009 IS THIS MACRO PARAMETER BLANK? Chang Y. Chung, Princeton University, Princeton, NJ John King, Ouachita Clinical Data Services, Mount Ida, AR

Fejlsøgning, %RETURN %* -------- ikke flere formelle fejl mv. --------;

Almen praksis Vi bruger næsten konsekvent KEYWORD-parametre Alle nye makro-variabler: gøres lokale med %LOCAL. husk at få i med i %do i=1 %to &Antal_Variabler... parametre er altid lokale Ryd op slet arbejds-datasæt, kataloger osv Hvis man ændrer vitale options, så husk, hvad de var sat til ændr tilbage igen

Restore af options, PROC OPTSAVE, OPTLOAD proc optsave out=_saved_options_; run;

Restore af options, PROC OPTSAVE, OPTLOAD proc optload data=_saved_options_; run;

Restore af options, PROC OPTSAVE, OPTLOAD proc optsave out=_saved_options_1; run; proc optload data=_saved_options_1; run; proc optsave out=_saved_options_2; run; proc compare data=_saved_options_1 compare=_saved_options_2; run;

Restore af options, GETOPTION %let old_pagesize=%sysfunc(getoption(pagesize,keyword)); PAGESIZE=55 options &old_pagesize; Andre muligheder sashelp.voption sashelp.vgopt dictionary.options dictionary.goptions

Indbygget dokumentation? 109 %dst_listdata(?) --- Hjælp til DST_LISTDATA -------------------------- Anvendelse: Lister data i et SAS-datasæt. Parametre : DATA= navn på et SAS-datasæt Eksempel : %dst_listdata(data=sashelp.class); -----------------------------------------------------

Indbygget dokumentation? %macro dst_listdata(help,data=); %if &help=? %then %do; %put; %put --- Hjælp til DST_LISTDATA --------------------------; %put Anvendelse: Lister data i et SAS-datasæt.; %put; %put Parametre : DATA= navn på et SAS-datasæt; %put; %put Eksempel : %nrstr(%dst_listdata(data=sashelp.class);); %put -----------------------------------------------------; %put; %return; %end; proc print data=&data; run; %mend;

Sådan har vi gjort det -register "SAS-støttens hjemmeside" "C:\Progra~1\Intern~1\iexplore.exe \\...\index.htm" -NOXSYNC /* Systemkommandoer kører asynkront med SAS */

Sådan har vi gjort det

Sådan har vi gjort det

På strejftur SUGI 30: Paper 060-30 HOW OLD AM I? ALDER Deb Cassidy beregner alder mellem to datoer int((intck('month',&startdato,&slutdato)-(day(&startdato)>day(&slutdato)))/12); CPRCHECK tjek cprnummer og afleverer alder og køn afleverer DATA-step kode Oplagte kandidater til SAS 9.2 Funktioner

På strejftur i makroerne DANFORMAT Danner et format ud fra et SAS-datasæt multilabel, hvis data er til det Numerisk eller Tekst format alt efter kodevariabel DELETE_GLOBALS (%SYMDEL, CALL SYMDEL) sletter samtlige globale makro-variabler DST_EXPORT2XLS SAS-data til Excel labels i stedet for variabelnavne formaterede værdier SASHELP.VCFORMAT brugerderfinerede formater

På strejftur i makroerne FJERNDUBLETTER Fjerner identiske observationer i et SAS-datasæt NB! NODUPREC i PROC SORT virker kun, hvis samtlige variabler figurerer i BY-sætningen. LOGSUMMARY kan kaldes til slut i et program giver en status over ting at være obs på fx 0 obs, 0 vars variable xxx is uninitialized

På strejftur i makroerne ORACLE2SAS Danner et SAS-datasæt ud fra en Oracle-tabel Oracle DATEs bliver til SAS DATEs Mulighed for at få KOLONNE COMMENTS med som labels SLETARK Sletter en fane i et Excel regneark Også hvis der er en formel Laver et VBScript, som eksekveres

På strejftur i makroerne VALIDSASDATASETNAME Tjekker om et navn på et SAS-datasæt er gyldigt (kalder VALIDSASNAME) findes (kalder DATASETEXIST variant) %if not %validsasdatasetname(&data) %then %do; %put ERROR: Fejl i datasætnavn, &validation_msg; %return; %end; ERROR: Fejl i datasætnavn, Libref PPP i PPP.TEST ikke oprettet med fx LIBNAME-sætningen.

SAND/FALSK makroer %if not %datasetexist(&data) %then %do; %put ERROR: Datasættet &data findes ikke!; %return; %end; må kun aflevere et 0 (falsk) eller 1 (sand) %macro datasetexist(data); %if %sysfunc(exist(&data)) %then %do; 1 %end; %else %do; 0 %end; %mend; %macro datasetexist(data); %sysfunc(exist(&data)) %mend;

Artikler pke@dst.dk Tegn og forstå alt om makrovariablers natur, scope osv. Makro Quoting / maskering Forstå brugen af maskeringsfunktioner %STR og %NRSTR %BQUOTE, %NRBQUOTE, og SUPERQ Afledte maskeringsfunktioner fx %QSUBSTR Makro halløj i DATA-steppet oversættelses/eksekveringstidspunkt

Spørgsmål? Kan tanker om sex få én til at nyse? Ja! Journal of the Royal Society of Medicine