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.

Slides:



Advertisements
Samankaltaiset esitykset
Vihreän liiton kesäpäivät 2006 Panu Laturi
Advertisements

Copyright  Hannu Laine Bittitason-operaatiot Hannu Laine.
Testaus ja testausympäristöt
Tietopaketti Big Datasta
 Vuoden 2014 ensimmäinen Tech Club tilaisuus pidettiin SAS Instituten tiloissa Otaniemessä. Päivän teemana oli Proc FCMP ja HASH –objektit. Lisäksi osaanottajia.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
AKTIIVISEMPI ARKI Työpohjat oman arjen tarkasteluun.
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
Stored Procs Pientä ja yleistä asiaa monelta eri kantilta.
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
Luku 5 – Tietojen hakeminen sovelluksiin
vuorovaikutteiset www-sivut 1.Asiakas-palvelinmalli kuvana Request Response request.asp response.asp.
SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen Virpi Virtanen Tieto-Tapiola Oy.
Tiheys.
HASH-Objekti ”Taulukkotietorakenne” Sugif by Heikki Herva.
LAADUKKAAT PALVELUT LAADUKKAILLA HANKINNOILLA PALVELUJEN PAKETOINTI – SEMINAARI
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
DIS Jouni Javanainen Fennia Technical Club.
Sugif by Heikki Herva Proc FCMP  Itse kirjoitetut funktiot Hash objekti  ”Taulukkotietorakenne”
Elämyshankekyselyn tulokset © Sovita Toteutus: Opiferum1.
Testaus Tiptopissa draft Mats Lindstedt, Mika Rintala.
1 Tulostaminen ja tiedostot. 2 Tulostaminen paperille n Tulostus voidaan tehdä esimerkiksi: –Crystal Reports -raporttigeneraattorilla –Printer-objektin.
Copyright 2009 Avarea Oy - Base SAS osaajasta DIS taituriksi Kokemuksia DI Studion käyttöönottoprojekteista.
Fi.opasnet.org fi.opasnet.org/fi/Ydinvoima Haluamme tietää Sinun mielipiteesi. Äänestikö kansanedustajasi oikein ydinvoimasta? Kansalaisparlamentti ydinvoimasta.
TASAPAINON RAKENTAMINEN
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Slideshare koonti Mervi Isola.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
13. Hyvä ohjelmointitapa (osa 1)
Tänään - Vaihto-info, Jani Haapakoski - Sivuaineista * Sivuaineet tutkintorakenteessa * Mitä vaihtoehtoja sivuaineissa on * Miten sivuaineiden opinto-oikeutta.
Java-ohjelmien vianjäljitys Pietu Pohjalainen. Vianjäljitin Vianjäljitin (debuggeri) on ohjelma, jolla voidaan seurata toisen ohjelman suoritusta Tietotekniikan.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 12 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
Esittäytyminen Vastaa esitettyihin kysymyksiin omalta kohdaltasi lyhyesti. Korvaa kysymykset omilla vastauksillasi. Kiitos!
Visual Basic -ohjelmointi
Algoritmi-harjoituksia…
SQL Standardoitu kieli, jonka avulla voidaan
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
HTML-lomakkeettMyn1 HTML-lomakkeet Web-sovelluksen käyttöliittymä rakentuu web-selaimen ominaisuuksista ja keskeisimmiltä osiltaan erityisesti HTML-kielellä.
DTD Teppo Räisänen Liiketalouden yksikkö.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
YHTEINEN IDEOINTI. Mitä yhteisiä työpäivään liikettä lisääviä asioita jo teemme? Kirjatkaa keskeisimmät asiat ylös. Voisiko joitain näistä asioista.
Kohti viittä konseptia
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
Tiedostojen käsittely
DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone.
Visual Basic -ohjelmointi
Kontrollirakenteet laajemmin
Puhu parin kanssa. Täytyykö sinun opiskella tänään illalla
Visual Basic -ohjelmointi
Ohjelmointi 1. toinen luento1 Taulukot n Kiinteät taulukot: alkioiden määrä tiedetään Dim intCount(12) As Integer 0 indeksit saavat arvoja 0-12 (Option.
SF 2007 (T.Hopeavuoren materiaali & Tekniikan viestintä) TYÖELÄMÄN ARKIVIESTINTÄ Vastaanottaja- ja tilanneanalyysi.
Hyvän ja huonon esityksen piirteitä
Tietokannan hallinta Kevät 2006 Jan Lindström R&G Chapter 1.
Valintarakenne valintarakenne alkaa aina kysymyksellä eli ehdolla ehto tarkoittaa, että muuttujan sisältöä verrataan toisen muuttujan sisältöön tai vakioon.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
Laiska laskenta, korekursio ja äärettömyys
Reports in Apply / eAge system
Datan metadata - mitä metadata on ja miksi sellaista tarvitaan?
Muuttujamuunnoksista
14. Hyvä ohjelmointitapa.
Jouni Javanainen Fennia Technical Club
Probability models and decision analysis : introduction
Probability models and decision analysis : introduction
Esityksen transkriptio:

Technical Club – BASE SAS Classics. Marko Kivelä, Arvotieto Oy Proc transpose, Proc summary, Proc formats ovat Markon suosikkiproceduureja. Mikä on sinun suosikkiproceduurisi? – Kahvitauko – The Little SAS Book – erityisesti ODS näkökulma. Eliisa Löyttyniemi, Turun Yliopisto Mitä mielenkiintoista kokenut SAS -osaaja Eliisa, löysi Little SAS Bookista tänä vuonna? – BASE SAS => SAS EG, lääkkeitä muutosvastarintaan. Jussi Varjus, VarjusConsulting Jussilla on nippu vinkkejä, joiden avulla kokenut Base SAS koodari pystyy helpoimmin jatkamaan eloaan SAS EG -ympäristössä Tilaisuus päättyy

BASE SAS Classics. Proc transpose, Proc summary, Proc formats ovat Markon suosikkiproceduureja. Mikä on sinun suosikkiproceduurisi? Marko Kivelä Arvotieto Oy

n Otsikko voisi siis olla “Best of the 70’s” n Joillekin kuulijoille varmasti peruskamaa - kaikille ei ehkä kuitenkaan. Kohderyhmänä: n Aloittelevat analyytikot (SAS –ympäristössä) n Kokeneet SAS –tekijät, jotka oppineet hommat EG:n tai DI –studion (tms.) kautta.

“Agenda: n Proc FORMATS n Proc TRANSPOSE n Proc SUMMARY & Proc PRINT n Proc CONTENTS n %macro n Retain n Call symput …asiaan. Lopuksi, jos ehditään: n “Kaikki by Kaikki”

Product Month Actual A JAN5 AFEB6 BFEB7 ProductVAR1JANFEB AActual56 BActual7 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; PROC TRANSPOSE Vaan näin: proc sort data=b out=c; by product; run; proc transpose data=c out=d (rename=(_name_=var1)); by product; var actual; id month; run; proc sort data=c_JAN; by product VAR1; run; proc sort data=c_FEB; by product VAR1; run; data D; merge C_JAN C_FEB; by product VAR1; run;

n Milloin tarvitsen tätä ? n Mikä on hankalaa ? n Mikä on helppoa ? n Miten/miksi vältän transponoinnin Kun tarvitsen datan toisessa “muodossa”. Hahmottaa, millaisessa muodossa datan oikeastaan loppujen lopuksi haluaa... + Kun tietää mitkä muuttujat “jäävät paikalleen” => ne ovat “by muuttujia”. + Skaalautuvuus. IF…THEN -kovakoodilla saa saman lopputuloksen PROC TRANSPOSE

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; Vaan näin: proc format; value citytype ‘A’=‘Kaupunki’ ‘B’=‘Kunta’ other=‘Other’; run; PROC FORMATS Tai: Luodaan dataset (work.f_city_t), muotoa Ja tämän jälkeen Proc format library=work cntlin=f_city_t; Run; startendlabelfmtnameType AAKaupunkiCitytypeC BBKuntaCitytypeC proc summary data=a; var n; class citytype; output sum=; format citytype $citytype.; run;

n Milloin tarvitsen tätä ? n Mikä on hankalaa ? n Mikä on helppoa ? n Miten/miksi vältän tekemästä näin... Luokittelu, uudelleenryhmittely/- nimeäminen,... Laaja kokonaisuus, C/S, catalogien hallinta, sisällön seuranta/tarkistus +Suoritusteho +Vähentää (toistettavaa) koodia If…then… => isommat datat PROC FORMATS

Esim: proc summary data=origdata.prdsale (keep=country actual predict) nway; class country; var actual predict; output out=a (drop=_type_ _freq_) sum=; run; data b; set a; ero=actual-predict; pct=100*(actual/predict); run; proc print data=b; by country; id country; sum actual predict ero; run; OUTPUT: COUNTRY ACTUAL PREDICT ero pct CANADA $246, $233, GERMANY $245, $231, U.S.A. $237, $241, ============ ============ ====== $730, $706, PROC SUMMARY OUTPUT & DATA -STEP => PROC PRINT

n Milloin tarvitsen tätä ? n Mikä on hankalaa ? n Mikä on helppoa ? n Miten/miksi vältän tekemästä näin... 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. Perusvälineiden (SUMMARY:n output) hyödyntäminen. PROC REPORTS tai PROC TABULATE. Tai muu järjestelmä...

Mitä se tarkoittaa ? Tutkitaan hakemiston datat ja niiden sisältö n kirjoitetaan METADATA n ohjataan makroja METADATAlla... PROC CONTENTS / DATAOHJATTU KOODI

Esimerkki: %LET LIBNAME=ORIGDATA; %PUT TUTKITTAVA SAS-HAKEMISTO:&libname; PROC CONTENTS DATA=&LIBNAME.._ALL_ OUT=METADATA.CONTE_&LIBNAME (KEEP=LIBNAME MEMNAME NAME TYPE FORMAT NOBS) NOPRINT; RUN; /* MITÄ DATOJA HAKEMISTOSSA ON */ PROC SORT DATA=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_=1 then n=0; n=n+1; run; /* TUTKITAAN DATOJEN LUKUMÄÄRÄ */ proc summary data=METADATA.DATASETS_&LIBNAME nway; var n; output out=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; /* ======================================= */ %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; PROC CONTENTS / DATAOHJATTU KOODI

Lopuksi (pikaisesti) läpikäydään esimerkkiohjelmia n KAIKKI BY KAIKKI –MAKRO n Löytyy ARVOTIETO - SAS PUB:sta

Kolme asiaa, jotka muistaa: n Datan kääntämisessä proc transpose n Kannattaa opetella. Oltava tarkkana. n Peukkusääntö: “BY –muuttujat pysyy” n Proc formats korvaa kovakoodaamisen n Vaatii yhteisiä toimintatapoja n Data-ohjattu formatointi ! n Pikkukikat: n Retain n Data –ohjattu koodi Do –loopilla. n Local macro –parametrit KIITOS !