Sunteți pe pagina 1din 32

Curs 9: Introducere n programarea SAS

Programe SAS
Un programSAS const dintr-o secven de pai trimis ctre execuie motorului SAS.
Seciunile de date (DATA steps) sunt, de obicei, folosite pentru a crea tabele SAS.

Fiier Text
Seciune de date

Tabel SAS nou

Seciune de proceduri

Raport

Tabele SAS existente

Seciunile de proceduri (PROC steps) sunt, de obicei, folosite pentru a efectua prelucrri i interogri.

Tipuri de fiiere n SAS


ASCII Fiiere generate de alte aplicaii

Externe Fiiere n SAS Interne

Temporare nume pe un nivel Permanente - nume pe nou niveluri (libref.nume)

Reguli de sintax
Instructiunile SAS au urmtoarele caracteristici: ncep, de obicei, cu un cuvnt cheie ntotdeuna se termin cu punct i virgul
libname ad_data 'C:\date sas'; data ad_data.orders; infile 'C:\date sas\orders.txt'; input Order_No 1-5 Prod_ID $ 2-10 Quantity 13-15 SellPrice 17-22 Income 25-32; run; proc print data=ad_data.orders; run; proc means data=ad_data.orders; title 'Orders Analysis'; var SellPrice; run;
4

Reguli de sintax

Unul sau mai multe caractere de spaiere pot fi folosite pentru a separa cuvintele. Instructiunile pot ncepe i se pot termina n orice coloan. O singur instructiune se poate scrie pe mai multe rnduri. Mai multe instructiuni pot fi scrise pe acceai linie.
libname ad_data 'C:\date sas'; data ad_data.orders; infile 'C:\date sas\orders.txt'; input Order_No 1-6 Prod_ID $ 7-10 Quantity 11-15 SellPrice 17-22 Income 25-32; run; proc print data=ad_data.orders; run; proc means data=ad_data.orders; title 'Orders Analysis'; var SellPrice; run;

Comentarii SAS

Scrie /* pentru a ncepe un comentariu. Scrie textul comentariului. Scrie */ pentru a termina comentariul.

/* Creaza tabela SAS ad_data.orders */ libname ad_data 'C:\date sas'; data ad_data.orders; infile 'C:\date sas\orders.txt'; input Order_No 1-5 Prod_ID $ 2-10 Quantity 13-15 SellPrice 17-22 Income 25-32; run; /* Realizeaza un raport lista pentru ad_data.orders */ proc print data=ad_data.orders; run;

Fiiere temporare

Trebuie furnizate valorile datelor. Nu se salveaz ca un set de date ntr-o locaie specificat.

data ord; input age sex $ prod_id quantity order_date mmddyy8.; format order_date yymmdds10.; cards; 25 f 02344 2 05/27/10 37 m 08798 4 04/29/10 45 f 09876 1 05/27/10 19 m 07897 3 05/30/10 proc sort data=ord; by descending order_date; proc print data=ord; title 'Unfulfilled orders';

Citirea datelor din fiiere flat


Procesul de citire a fiierelor de date flat

Delimitatorul spatiu
Considernd c avem un fiier numit produse.txt care conine numele, preul i categoria a cinci produse, fiecare avnd valoarea separat printr-un spaiu, acesta ar avea urmtoarea form: hartie 2 birotica creione 10 birotica apa 6 alimente ceai 8 alimente tricou 100 haine Presupunnd c fiierul este stocat n calculatorul local n directorul c:\date sas, programul SAS care citete date din acest fiier este: data produse; infile 'c:\date sas\produse.txt'; input Nume $ Pret Categorie $; run;

Delimitatorul virgula
Pentru fiierul de date: hartie,2,birotica creione,10,birotica apa,6,alimente ceai,8,alimente tricou,100,haine se vor folosi urmtoarele declaraii pentru a obine setul de date produse: data produse; infile 'c:\date sas\produse.txt' dsd; input Nume $ Pret Categorie $; run;
10

Alti delimitatori
Pentru orice alt tip de delimitatori, instructiunea infile trebuie folosit mpreun cu opiunea dlm sau delimiter. Au aceeai seminificaie, prima fiind abrevierea celeilalte.
Exemplu: infile sau
infile 'c:\date sas\produse.txt' dlm='/';. 'c:\date sas\produse.txt' delimiter='/';

11

Fisiere cu date in coloane cu latime fixa


Cel de-al doilea tip de fiiere externe pe care SAS poate s le citeasc sunt cele care conin date n coloane cu lime fix. Pentru acestea exist dou modaliti de citire: coloane de intrare (column input) intrri formatate (formatted input) Avantajul folosirii datelor n coloane cu lime fix este acela c datele pot fi cite n orice ordine este necesar, iar valorile lips pot fi specificate prin tot attea spaii libere ct are i limea coloanei.

12

Metoda 1
Considerm din nou fiierul produse.txt, care conine urmtoarele valori: hartie 2 birotica creione10 birotica apa 6 alimente ceai 8 alimente tricou 100haine Aa cum se poate observa, numele are 7 caractere, preul 3, iar categoria 8.

13

Metoda 1: Coloane de intrare folosete declaraia input specificnd pentru fiecare variabil numele su, semnul $ pentru variabilele caracter, precum i poziia de nceput i de sfrit a fiecrei variabile n linia de date.
data produse; infile 'c:\date sas\produse.txt'; input Nume $ 1-7 Pret 8-10 Categorie $ 11-18; run;

14

Metoda 2: Intrri formatate poate citi diferite tipuri de formate, cum ar fi moned (numere avnd semnul dolar sau euro), numere cu zecimale, date n diferite formate. Declaraia input are umtoarele opiuni: semnul @ urmat de poziia de nceput a variabilei n linia de date, numele variabilei, formatul variabilei, dac acesta este necesar, precum i limea coloanei asociat variabilei.

15

Exemplu metoda 2
data produsee; infile 'c:\date sas\produse.txt'; input @1 Nume $7. @8 Pret dollar4. @12 Categorie $8.; format Pret dollar6.0; /* datalines; hartie $2 birotica creione$10 birotica apa $6 alimente ceai $8 alimente tricou $100haine */ run;
16

Procesare condiional n programele SAS


Procesarea condiional reprezint capacitatea programelor SAS de a lua decizii n funcie de valorile datelor. Principala construcie pentru procesarea condiional este declaraia IF, mpreun cu versiunea ei ELSE IF. Forma general a acestei instructiuni este: IF expresie THEN insructiune; ELSE instructiune;

17

Operatorii logici de comparaie din SAS


Operator de comparatie Equal to Not equal to Less than Grater than Less than or equal to Grater than or equal to Equal to one in a list Sintaxa SAS EQ NE LT GT LE GE IN

18

Exemplu
libname products 'C:\date sas'; data products.produse; infile 'c:\date sas\produse.txt'; input @1 Nume $7. @8 Pret dollar4. @12 Categorie $8.; if missing(Pret) or Pret lt 5 then Grup=1; else if Pret le 10 then Grup=2; else Grup=3; run;

19

Intr-o sectiune de date, observatiile pot fi regrupate intrun subset de date SAS folosind clauzele WHERE, DELETE sau instructiunea IF. Exemplu de crearea e unui subset de date pentru categoria de produse alimente: data mancare; set products.produse; where Categorie eq 'alimente'; run;
Daca am dori un subset de date pt grupul 1, conditia ar fi:
where Grup eq 1;

20

Clauza DELETE este folosita pentru a controla care observatii sa nu fie incluse in subsetul de date. Sintaxa este: IF expresie THEN DELETE; Un subset de date care sa contina toate produsele mai putin alimentele: data non_mancare; set products.produse; if Categorie eq 'alimente' then delete; run; Acelasi lucru poate fi obtinut folosind clauza WHERE si conditia not equal: data non_mancare; set products.produse; where Categorie ne 'alimente'; run; Acelasi lucru poate fi obtinut folosind instructiunea IF fara clauza THEN: data non_mancare; set products.produse; if Categorie ne 'alimente'; run;
21

Vizualizarea codului generat


Cod parial al unei prelucrri

22

Vizualizarea codului generat


Pentru a vizualiza tot codul SAS necesar pentru generarea rezultatelor unei prelucrri, se selecteaz Tools Options Tasks General , opiunea Display all generated SAS code in task output.

23

Vizualizarea codului generat


Cod detaliat pentru generarea rezultatelor n format HTML, PDF sau SAS

24

Editatea codului SAS existent


Codul SAS generat de o prelucrare este read-only. ncercarea de a-l modifica genereaz apariia ferestrei din imagine.

25

Editatea codului SAS existent

Un obiect de tip cod este adugat la proiect.


26

Codul poate fi editat. Noul cod nu mai este asociat prelucrrii.

Personalizarea codului prelucrrilor


Selectai Insert Code pentru a aduga cod SAS.
Selectai Preview code pentru a previzualiza codul generat.

27

Personalizarea codului prelucrrilor

Selectai poziia n care codul va fi inserat n programul asociat prelucrrii.

28

Personalizarea codului prelucrrilor

Codul personalizat este inclus ca parte a programului asociat prelucrrii.

29

Inserarea automat de cod


Selectai Tools Options Custom Code.

Insereaz cod nainte i dup ntreg codul trimis spre execuie.

30

Inserarea codului nainte i dup prelucrri

31

Lucru individual
Descoperii i testai funciile oferite de SAS Enterprise Guide pentru adugarea, crearea i exportul de programe SAS.

32