Technical club 11 9 2013
This presentation is the property of its rightful owner.
Sponsored Links
1 / 14

Technical Club 11.9.2013 PowerPoint PPT Presentation


  • 57 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Technical Club 11.9.2013

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


Technical club 11 9 2013

BASE SAS Classics.

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

Marko Kivelä

Arvotieto Oy

www.arvotieto.fi


Technical club 11 9 2013

  • 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 JAN5

AFEB6

BFEB7

ProductVAR1JANFEB

AActual56

BActual7

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;


Technical club 11 9 2013

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


Technical club 11 9 2013

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;


Technical club 11 9 2013

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


Technical club 11 9 2013

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...


Technical club 11 9 2013

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 !


  • Login