technical club 11 9 2013
Download
Skip this Video
Download Presentation
Technical Club 11.9.2013

Loading in 2 Seconds...

play fullscreen
1 / 14

Technical Club 11.9.2013 - PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on

Technical Club 11.9.2013. 14.05 – 14.35 BASE SAS Classics. Marko Kivelä, Arvotieto Oy Proc transpose , Proc summary, Proc formats ovat Markon suosikkiproceduureja . Mikä on sinun suosikkiproceduurisi ? 14.35 – 14.50 Kahvitauko

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Technical Club 11.9.2013' - calvin-phillips


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
technical club 11 9 2013
Technical Club 11.9.2013
  • 14.05 – 14.35 BASE SAS Classics. Marko Kivelä, Arvotieto OyProc transpose, Proc summary, Proc formats ovat Markon suosikkiproceduureja. Mikä on sinun suosikkiproceduurisi?
  • 14.35 – 14.50 Kahvitauko
  • 14.50 – 15.25 The Little SAS Book – erityisesti ODS näkökulma. Eliisa Löyttyniemi, Turun YliopistoMitä mielenkiintoista kokenut SAS -osaaja Eliisa, löysi Little SAS Bookista tänä vuonna?
  • 15.25 – 16.00 BASE SAS => SAS EG, lääkkeitä muutosvastarintaan. Jussi Varjus, VarjusConsultingJussilla on nippu vinkkejä, joiden avulla kokenut Base SAS koodari pystyy helpoimmin jatkamaan eloaan SAS EG -ympäristössä.
  • 16.00 Tilaisuus päättyy
slide2
BASE SAS Classics.

Proc transpose, Proc summary, Proc formats ovat Markon suosikkiproceduureja. Mikä on sinun suosikkiproceduurisi?

Marko Kivelä

Arvotieto Oy

www.arvotieto.fi

slide3
Otsikkovoisisiis olla “Best of the 70’s”
  • Joillekinkuulijoillevarmastiperuskamaa - kaikilleeiehkäkuitenkaan. Kohderyhmänä:
    • Aloittelevatanalyytikot (SAS –ympäristössä)
    • Kokeneet SAS –tekijät, jotkaoppineethommatEG:n tai DI –studion (tms.) kautta.
asiaan
…asiaan.

“Agenda:

  • Proc FORMATS
  • Proc TRANSPOSE
  • Proc SUMMARY & Proc PRINT
  • Proc CONTENTS
    • %macro
    • Retain
    • Call symput

Lopuksi, jos ehditään:

  • “Kaikki by Kaikki”
proc transpose
PROC TRANSPOSE

Vaan näin:

procsortdata=b out=c;

by product;

run;

proctransposedata=c out=d (rename=(_name_=var1));

by product;

var actual;

id month;

run;

Ei näin:

data c_JAN (keep=product VAR1 JAN);

set b;

if month=‘JAN’ then

do;

VAR1=‘Actual’;

JAN=actual;

end;

run;

data c_FEB (keep=product VAR1 FEB);

set b;

if month=‘FEB’ then

do;

VAR1=‘Actual’;

FEB=actual;

end;

run;

Product Month Actual

A JAN 5

A FEB 6

B FEB 7

Product VAR1 JAN FEB

A Actual 5 6

B Actual 7

procsortdata=c_JAN;

by product VAR1;

run;

procsortdata=c_FEB;

by product VAR1;

run;

data D;

merge C_JAN C_FEB;

by product VAR1;

run;

slide6
PROC TRANSPOSE

Kun tarvitsen datan toisessa

“muodossa”.

Hahmottaa, millaisessa muodossa datan oikeastaan loppujen lopuksi haluaa...

  • Milloin tarvitsen tätä ?
  • Mikä on hankalaa ?
  • Mikä on helppoa ?
  • Miten/miksi vältän transponoinnin

+ Kun tietää mitkä muuttujat “jäävät paikalleen” => ne ovat “by muuttujia”.

+ Skaalautuvuus.

IF…THEN -kovakoodilla

saa saman lopputuloksen

slide7
Tai:

Luodaan dataset (work.f_city_t),

muotoa

Ja tämän jälkeen

Proc format library=work cntlin=f_city_t;

Run;

PROC FORMATS

Vaan näin:

proc format;

value citytype

‘A’=‘Kaupunki’

‘B’=‘Kunta’

other=‘Other’;

run;

Ei näin:

data a;

length var2 $12.;

set a;

if citytype=’A’ then var2=‘Kaupunki’;

if citytype=’B’ then var2=‘Kunta’;

run;

proc summary data=a;

var n;

class var2;

output sum=;

run;

proc summary data=a;

var n;

class citytype;

output sum=;

format citytype $citytype.;

run;

slide8
PROC FORMATS

Luokittelu, uudelleenryhmittely/-nimeäminen, ...

  • Milloin tarvitsen tätä ?
  • Mikä on hankalaa ?
  • Mikä on helppoa ?
  • Miten/miksi vältän tekemästä näin...

Laaja kokonaisuus,

C/S, catalogien hallinta, sisällön seuranta/tarkistus

+Suoritusteho

+Vähentää (toistettavaa) koodia

If…then…

=> isommat datat

slide9
PROC SUMMARY output & data -step=> PROC PRINT

Esim:

procsummarydata=origdata.prdsale (keep=country actual predict) nway;

class country;

var actual predict;

outputout=a (drop=_type_ _freq_) sum=;

run;

data b;

set a;

ero=actual-predict;

pct=100*(actual/predict);

run;

procprintdata=b;

by country;

id country;

sum actual predict ero;

run;

OUTPUT:

COUNTRY ACTUAL PREDICT ero pct

CANADA $246,990.00 $233,019.00 13971 105.996

GERMANY $245,998.00 $231,554.00 14444 106.238

U.S.A. $237,349.00 $241,722.00 -4373 98.191

============ ============ ======

$730,337.00 $706,295.00 24042

proc summary proc print
PROC SUMMARY & PROC PRINT

Raportti, jossa summatasoille johdettuja muuttujia - esim. %-muutos tms.

Ei hankalaa - jos osaa Summary:n + Data-vaiheen + PRINT:t

…PROC REPORTS on hankala.

  • Milloin tarvitsen tätä ?
  • Mikä on hankalaa ?
  • Mikä on helppoa ?
  • Miten/miksi vältän tekemästä näin...

Perusvälineiden (SUMMARY:n output) hyödyntäminen.

PROC REPORTS tai PROC TABULATE.

Tai muu järjestelmä...

proc contents dataohjattu koodi
PROC CONTENTS / DATAOHJATTU KOODI

Mitä se tarkoittaa ?

Tutkitaanhakemistondatatjaniidensisältö

  • kirjoitetaan METADATA
  • ohjataanmakrojaMETADATAlla...
slide12
PROC CONTENTS / dataohjattukoODi

/* ======================================= */

%MACRO DATA_CONTE (START=1,END=&MAX_N);

%DO i=&START %TO &END;

data _null_;

set METADATA.DATASETS_&LIBNAME;

where n=&i;

call symput('DATA_C',MEMNAME);

run;

%PUT DATA:&DATA_C;

PROC CONTENTS DATA=&LIBNAME..&DATA_C.

OUT=METADATA.CONTE_&DATA_C. (KEEP=LIBNAME MEMNAME NAME TYPE FORMAT NOBS) NOPRINT;

RUN;

/* DIM1 MÄÄRITYS - eli luokittelevat muuttujat */

data CHAR (keep=name);

set metadata.CONTE_&DATA_C;

where type=2;

run;

data CHAR;

length COL $200;

retain COL;

set CHAR;

if _N_=1 then COL=trim(left(NAME));

else COL=trim(left(COL))||' '||trim(left(NAME));

call symput('DIM1',COL);

run;

%PUT LUOKITTELEVAT MUUTTUJAT:&DIM1;

/* ANALYSIS MÄÄRITYS - eli numeeriset muuttujat */

data NUM (keep=name);

set metadata.CONTE_&DATA_C;

where type=1;

run;

data NUM;

length COL $200;

retain COL;

set NUM;

if _N_=1 then COL=trim(left(NAME));

else COL=trim(left(COL))||' '||trim(left(NAME));

call symput('ANALYS',COL);

run;

%PUT NUMEERISET MUUTTUJAT:&ANALYS;

%END;

%mend DATA_CONTE;

Esimerkki:

%LET LIBNAME=ORIGDATA;

%PUT TUTKITTAVA SAS-HAKEMISTO:&libname;

PROCCONTENTSDATA=&LIBNAME.._ALL_

OUT=METADATA.CONTE_&LIBNAME (KEEP=LIBNAME MEMNAME NAME TYPE FORMAT NOBS) NOPRINT;

RUN;

/* MITÄ DATOJA HAKEMISTOSSA ON */

PROCSORTDATA=METADATA.CONTE_&LIBNAME (KEEP=MEMNAME)

OUT=METADATA.DATASETS_&LIBNAME NODUPKEY;

BY MEMNAME;

RUN;

data METADATA.DATASETS_&LIBNAME;

retain n;

set METADATA.DATASETS_&LIBNAME;

if _N_=1then n=0;

n=n+1;

run;

/* TUTKITAAN DATOJEN LUKUMÄÄRÄ */

procsummarydata=METADATA.DATASETS_&LIBNAME nway;

var n;

outputout=DATA_N (keep=max_N) max=max_N;

run;

data_null_;

set DATA_N;

call symput('max_N',max_N);

run;

%PUT MAX_N:&MAX_N;

lopuksi pikaisesti l pik yd n esimerkkiohjelmia
Lopuksi (pikaisesti) läpikäydäänesimerkkiohjelmia
  • KAIKKI BY KAIKKI –MAKRO
  • Löytyy ARVOTIETO - SAS PUB:sta
  • http://www.arvotieto.fi/Pages/SASPUB.aspx
kolme asiaa jotka muistaa
Kolmeasiaa, jotkamuistaa:
  • Datankääntämisessäproc transpose
    • Kannattaaopetella. Oltavatarkkana.
    • Peukkusääntö: “BY –muuttujatpysyy”
  • Proc formats korvaakovakoodaamisen
    • Vaatiiyhteisiätoimintatapoja
    • Data-ohjattuformatointi !
  • Pikkukikat:
    • Retain
    • Data –ohjattukoodi Do –loopilla.
    • Local macro –parametrit

KIITOS !

ad