Documente Academic
Documente Profesional
Documente Cultură
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
Seciune de proceduri
Raport
Seciunile de proceduri (PROC steps) sunt, de obicei, folosite pentru a efectua prelucrri i interogri.
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';
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
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
17
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
22
23
24
25
27
28
29
30
31
Lucru individual
Descoperii i testai funciile oferite de SAS Enterprise Guide pentru adugarea, crearea i exportul de programe SAS.
32