SAS FANS – NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS

SAS FANS – NYTT & NYTTIG
FRA VERKTØYKASSA TIL SAS
4. MARS 2014, MIKKEL SØRHEIM
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
2
TEMA 1 MULTIPROSESSERING MED DATASTEGET
• Multiprosessering har lenge vært et tema i SAS
• Stadig ny funksjonalitet er med på å skulle utnytte «jernet»
maksimalt
• Hva er PROC DS2, og hvorfor trenger vi denne?
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
3
TEMA 2 MAKRONYTT
Automatic Macro Variables
SYSADDRBITS
contains the number of bits of an address.
SYSENDIAN
contains an indication of the byte order of the current session. The
possible values are LITTLE or BIG.
SYSNOBS
contains the number of observations read from the last data set that
was closed by the previous procedure or DATA step.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
4
TEMA 2 MAKRONYTT
SYSODSESCAPECHAR
displays the value of the ODS ESCAPECHAR= from within the
program.
SYSSIZEOFLONG
contains the length in bytes of a long integer in the current session.
SYSSIZEOFPTR
contains the size in bytes of a pointer.
SYSSIZEOFUNICODE
contains the length in bytes of a Unicode character in the current
session.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
5
TEMA 2 MAKRONYTT
Macro Functions
%SYSMACEXEC
indicates whether a macro is currently executing.
%SYSMACEXIST
indicates whether there is a macro definition in the WORK.SASMACR
catalog.
%SYSMEXECDEPTH
returns the depth of nesting from the point of call.
%SYSMEXECNAME
returns the name of the macro executing at a nesting level.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
6
TEMA 2 MAKRONYTT
Macro Statements
%SYSMSTORECLEAR
closes stored compiled macros and clears the SASMSTORE= library.
%SYSMACDELETE
deletes a macro definition from the WORK.SASMACR catalog.
Macro System Options
MAUTOCOMPLOC
displays in the SAS log the source location of the autocall macros
when the autocall macro is compiled.
MAUTOLOCINDES
specifies whether the macro processor prepends the full pathname of
the autocall source file to the description field of the catalog entry of
compiled auto call macro definition in the WORK.SASMACR catalog.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
7
TEMA 2 MAKRONYTT
Macro Statements
MCOVERAGE
enables the generation of coverage analysis data.
MCOVERAGELOC=
specifies the location of the coverage analysis data file.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
8
TEMA 3 REGULAR EXPRESSIONS
Definition of Perl Regular Expression (PRX) Functions and CALL
Routines
Perl regular expression (PRX) functions and CALL routines refers to a
group of functions and CALL routines that use a modified version of
Perl as a pattern-matching language to parse character strings. You
can perform the following tasks:
•
•
•
•
search for a pattern of characters within a string
extract a substring from a string
search and replace text with other text
parse large amounts of text, such as web logs or other text data
Perl regular expressions comprise the character string matching
category for functions and CALL routines. For a short description of
these functions and CALL routines, see Functions and CALL Routines
by Category in the Dictionary section of this document.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
9
TEMA 3 REGULAR EXPRESSIONS
Benefits of Using Perl Regular Expressions in the DATA Step
Using Perl regular expressions in the DATA step enhances searchand-replace options in text. You can use Perl regular expressions to
perform the following tasks:
• validate data
• replace text
• extract a substring from a string
You can write SAS programs that do not use regular expressions to
produce the same results as you do when you use Perl regular
expressions. However, the code without the regular expressions
requires more function calls to handle character positions in a string
and to manipulate parts of the string.
Perl regular expressions combine most, if not all, of these steps into
one expression. The resulting code is less prone to error, easier to
maintain, and clearer to read.
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
10
TEMA 3 REGULAR EXPRESSIONS
Eksempel på å bruke Perl Regular Expressions i et DATA Steg
/* Lager data set med liste med navn */
proc ds2;
data names;
dcl char(32) name;
method init();
name=‘Dybvig, Petter'; output;
name=‘Fiskaaen, Marit'; output;
name=‘Hansen, Vegard'; output;
name=‘Sørheim, Mikkel'; output;
end;
enddata;
run;
quit;
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
11
TEMA 3 REGULAR EXPRESSIONS
Eksempel på å bruke Perl Regular Expressions i et DATA Steg
/* Bytte rekkefølge på etternavn og fornavn */
proc ds2;
data ReversedNames;
method run();
set names;
name=prxchange('s/(\w+), (\w+)/$2 $1/', -1, name);
end;
enddata;
run;
quit;
title 'FANS i Stavanger' ;
title2 'Navn på foredragsholdere fra SAS';
proc print data=ReversedNames;
run;
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
12
TEMA 3 REGULAR EXPRESSIONS
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
13
TEMA 3 REGULAR EXPRESSIONS
proc format;
invalue xxx (default=20)
'/(\d+):(\d\d)(?:\.(\d+))?/'
(REGEXP) = [time8.]
'/\d\d\D\D\D\d\d/' (REGEXP) =
[date7.]
'/\d\d\D\D\D\d\d\d\d/' (REGEXP)
= [date9.]
other=_error_;
run;
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
14
TEMA 4 LITT OM GRAFIKK
• Utgangspunkt i vaksinasjonsdebatten. I Norge, USA og ellers har
debatten vært stor. På blogger , Facebook og i tradisjonelle media
• https://www.tycho.pitt.edu/ Prosjekt Tycho – fra Universitetet i
Pittsburgh
• Litt grafikk: http://graphics.wsj.com/infectious-diseases-andvaccines/
• Databasen er støttet av Bill & Melinda Foundation og National
Institute of Health
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
15
TEMA 4 LITT OM GRAFIKK
• Vanskelig å skille null verdier (svært lysesblå) fra missing verdier
(lys grå)
• Ikke nok plass for alle navn på stater verdier på venstre side.
• Når man holder musa over de fargede blokkene for å se på teksten
blir boksen lyseblå. Dette kan få en til å tro at det er fargen på
boksen.
• Selve grafen sier ikke at måleenheten er antall tilfeller pr. 100K
mennesker pr. år.
• Fargekodene er ikke umiddelbart intuitive mhp verdi, siden de
bruker «semi-regnbue» fargekoding. Dette gjelder særlig i
gul/grønn/blå enda av skalaen
C op yr i g h t © 2 0 1 5 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .