You are on page 1of 32

Curs 9: Introducere în programarea SAS

1

Programe SAS
Un programSAS constă dintr-o secvenţă de paşi trimisă către execuţie motorului SAS.
Secţiunile de date (DATA steps) sunt, de obicei, folosite pentru a crea tabele SAS.

Fişier Text
Secţiune de date

Tabelă SAS nouă

Secţiune de proceduri

Raport

Tabele SAS existente

Secţiunile de proceduri (PROC steps) sunt, de obicei, folosite pentru a efectua prelucrări şi interogări.

2

Tipuri de fişiere în SAS
ASCII Fişiere generate de alte aplicaţii

Externe Fişiere în SAS Interne

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

3

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

orders. data ad_data. libname ad_data 'C:\date sas'. run. proc print data=ad_data.txt'. Instructiunile pot începe şi se pot termina în orice coloană.Reguli de sintaxă     Unul sau mai multe caractere de spaţiere pot fi folosite pentru a separa cuvintele. Mai multe instructiuni pot fi scrise pe acceaşi linie. infile 'C:\date sas\orders.orders. input Order_No 1-6 Prod_ID $ 7-10 Quantity 11-15 SellPrice 17-22 Income 25-32. O singură instructiune se poate scrie pe mai multe rânduri. run.orders. 5 . var SellPrice. title 'Orders Analysis'. run. proc means data=ad_data.

orders. Scrie */ pentru a termina comentariul. /* Realizeaza un raport lista pentru ad_data. run. infile 'C:\date sas\orders.orders */ libname ad_data 'C:\date sas'.orders. data ad_data.Comentarii SAS    Scrie /* pentru a începe un comentariu. Scrie textul comentariului. input Order_No 1-5 Prod_ID $ 2-10 Quantity 13-15 SellPrice 17-22 Income 25-32. run.orders */ proc print data=ad_data.txt'. 6 . /* Creaza tabela SAS ad_data.

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. Nu se salvează ca un set de date într-o locaţie specificată. input age sex $ prod_id quantity order_date mmddyy8.Fişiere temporare   Trebuie furnizate valorile datelor. data ord.. format order_date yymmdds10. cards.. 7 . proc print data=ord. title 'Unfulfilled orders'. by descending order_date.

Citirea datelor din fişiere flat Procesul de citire a fişierelor de date flat 8 .

acesta ar avea următoarea formă: hartie 2 birotica creione 10 birotica apa 6 alimente ceai 8 alimente tricou 100 haine Presupunând că fişierul este stocat în calculatorul local în directorul c:\date sas.txt'. infile 'c:\date sas\produse.txt care conţine numele.Delimitatorul spatiu Considerând că avem un fişier numit produse. run. preţul şi categoria a cinci produse. 9 . input Nume $ Pret Categorie $. programul SAS care citeşte date din acest fişier este: data produse. fiecare având valoarea separată printr-un spaţiu.

6.haine se vor folosi următoarele declaraţii pentru a obţine setul de date produse: data produse.txt' dsd.2.alimente tricou.10. input Nume $ Pret Categorie $.8. run.birotica apa.100.birotica creione.alimente ceai. infile 'c:\date sas\produse.Delimitatorul virgula Pentru fişierul de date: hartie. 10 .

Au aceeaşi seminificaţie.  Exemplu: infile  sau  infile 'c:\date sas\produse. 'c:\date sas\produse..Alti delimitatori  Pentru orice alt tip de delimitatori. instructiunea infile trebuie folosită împreună cu opţiunea dlm sau delimiter.txt' delimiter='/'. 11 .txt' dlm='/'. prima fiind abrevierea celeilalte.

Pentru acestea există două modalităţi de citire:  coloane de intrare (column input)  intrări formatate (formatted input) Avantajul folosirii datelor în coloane cu lăţime fixă este acela că datele pot fi cite în orice ordine este necesară. 12 .Fisiere cu date in coloane cu latime fixa Cel de-al doilea tip de fişiere externe pe care SAS poate să le citească sunt cele care conţin date în coloane cu lăţime fixă. iar valorile lipsă pot fi specificate prin tot atâtea spaţii libere cât are şi lăţimea coloanei.

numele are 7 caractere. 13 . iar categoria 8. preţul 3. care conţine următoarele valori: hartie 2 birotica creione10 birotica apa 6 alimente ceai 8 alimente tricou 100haine Aşa cum se poate observa.txt.Metoda 1 Considerăm din nou fişierul produse.

semnul $ pentru variabilele caracter. Metoda 1: Coloane de intrare foloseşte declaraţia input specificând pentru fiecare variabilă numele său. 14 . precum şi poziţia de început şi de sfârşit a fiecărei variabile în linia de date. run. data produse.txt'. infile 'c:\date sas\produse. input Nume $ 1-7 Pret 8-10 Categorie $ 11-18.

precum şi lăţimea coloanei asociată variabilei. Metoda 2: Intrări formatate poate citi diferite tipuri de formate. formatul variabilei.  Declaraţia input are umătoarele opţiuni: semnul @ urmat de poziţia de început a variabilei în linia de date. dacă acesta este necesar. date în diferite formate. 15 . numere cu zecimale. numele variabilei. cum ar fi monedă (numere având semnul dolar sau euro).

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

 Forma generală a acestei instructiuni este: IF expresie THEN insructiune.Procesare condiţională în programele SAS  Procesarea condiţională reprezintă capacitatea programelor SAS de a lua decizii în funcţie de valorile datelor. ELSE instructiune. 17 . împreună cu versiunea ei ELSE IF.  Principala construcţie pentru procesarea condiţională este declaraţia IF.

Operatorii logici de comparaţie 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 .

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

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

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

Vizualizarea codului generat Cod parţial al unei prelucrări 22 .

23 . se selectează Tools  Options  Tasks General . opţiunea Display all generated SAS code in task output.Vizualizarea codului generat Pentru a vizualiza tot codul SAS necesar pentru generarea rezultatelor unei prelucrări.

PDF sau SAS 24 .Vizualizarea codului generat Cod detaliat pentru generarea rezultatelor în format HTML.

25 . Încercarea de a-l modifica generează apariţia ferestrei din imagine.Editatea codului SAS existent Codul SAS generat de o prelucrare este read-only.

Noul cod nu mai este asociat prelucrării.Editatea codului SAS existent Un obiect de tip cod este adăugat la proiect. . 26 Codul poate fi editat.

Selectaţi Preview code pentru a previzualiza codul generat.Personalizarea codului prelucrărilor Selectaţi Insert Code… pentru a adăuga cod SAS. 27 .

Personalizarea codului prelucrărilor Selectaţi poziţia în care codul va fi inserat în programul asociat prelucrării. 28 .

Personalizarea codului prelucrărilor Codul personalizat este inclus ca parte a programului asociat prelucrării. 29 .

30 .Inserarea automată de cod Selectaţi Tools  Options  Custom Code. Inserează cod înainte şi după întreg codul trimis spre execuţie.

Inserarea codului înainte şi după prelucrări 31 .

crearea şi exportul de programe SAS.Lucru individual Descoperiţi şi testaţi funcţiile oferite de SAS Enterprise Guide pentru adăugarea. 32 .