Procesări Iterative ale Datelor

Previzualizare laborator:

Extras din laborator:

x

Lecţia 4. Procesări iterative ale datelor

4.1 Introducere

4.2 Grupuri DO (DO Groups)

4.3 Instrucţiunea Sum

4.4 Cicluri DO (DO Loops)

4.5 Alte forme ale ciclurilor DO

4.6 Instrucţiunile DO UNTIL şi DO WHILE

4.7 Instrucţiunile LEAVE şi CONTINUE

4.8 Aplicaţii propuse

4.1 Introducere

SAS oferă mai multe modalităţi de realizare a proceselor iterative (aceeaşi secvenţă de cod se execută de mai multe ori). În acest capitol sunt prezentate: grupuri DO (DO groups), cicluri DO (DO loops), instrucţiunile DO WHILE şi DO UNTIL.

4.2 Grupuri DO (DO Groups)

Sintaxa unui grup DO este următoarea:

IF condiţie THEN DO;

secventa instructiuni;

END;

Instrucţiunile dintre DO şi END formează un grup DO. Când condiţia este îndeplinită, toate instrucţiunile din grupul DO se execută. Semnificaţia este următoarea: ”dacă este îndeplinită condiţia, execută secvenţă până când ajungi la sfârşit”.

Deşi la o primă vedere instrucţiunea pare una de decizie, similară instrucţiunii IF din alte limbaje de programare (C, Pascal etc.), ea este considerată în SAS mai apropiată de o iteraţie (se repetă aceeaşi secvenţă pentru mai multe date care îndeplinesc o condiţie).

Pentru a arăta cum funcţionează un grup DO, să considerăm tabelul de date conţinând informaţii referitoare la nişte studenţi: vârstă, gen, rezultatul la un examen parţial (variabila partial), rezultatul la un test (variabila test) şi rezultatul la examenul final (examen_final).

Dorim să citim valori din acest tabel de date şi să creăm două noi variabile: cat_varsta (categoria de varsta) şi medie. Dacă varsta este mai mică sau egală decât 39, atunci categoria de varsta să fie “tanar” şi media să se calculeze ca medie ponderată (partial 40% şi examen_final 60%). Dacă varsta este mai mare decât 39, atunci categoria de varsta să fie “in varsta” şi media să se calculeze ca medie aritmetică între partial şi examen_final.

Datele se găsesc în fişierul date.txt. Conţinutul fişierului este următorul:

21 M 80 B- 82

. F 90 A 93

35 M 87 B+ 85

48 F . . 76

59 F 95 A+ 97

15 M 88 . 93

67 F 97 A 91

. M 62 F 67

35 F 77 C- 77

49 M 59 C 81

Să vedem mai întâi programul care nu conţine un grup DO. Programul conţine comanda INFILE, de import al datelor din fişierul text date.txt.

data studenti;

length gen $ 1

test $ 2

cat_varsta $ 13;

infile 'C:Documents and SettingsAdministratorDesktoplectia4date.txt';

input varsta gen partial test examen_final;

if missing(varsta) then delete;

if varsta le 39 then cat_varsta = 'tanar’;

if varsta le 39 then medie = .4*partial + .6*examen_final;

if varsta gt 39 then cat_varsta = 'in varsta';

if varsta gt 39 then medie = (partial + examen_final)/2;

run;

proc print data=studenti noobs;

run;

Se observă că primele două instrucţiuni IF, precum şi ultimele două au aceeaşi condiţie. Ar fi de preferat ca scriind o singură verificare a condiţiei să se poată executa mai multe operaţii. Acest lucru se realizează cu ajutorul unui grup DO, astfel:

data studenti;

length gen $ 1

test $ 2

cat_varsta $ 13;

infile 'C:Documents and SettingsAdministratorDesktoplectia4date.txt';

input varsta gen partial test examen_final;

if missing(varsta) then delete;

if varsta le 39 then do;

cat_varsta = 'tanar';

medie = .4*partial + .6*examen_final;

end;

else if varsta gt 39 then do;

cat_varsta = 'in varsta';

medie = (partial + examen_final)/2;

end;

run;

proc print data=studenti noobs;

run;

Rezultatul execuţiei prgramului este următorul:

Se observă că ambele programe funcţionează corect în ceea ce priveşte valorile lipsă ale variabilei varsta. Funcţia missing() returnează valoarea true dacă parametrul său este o valoare lipsă. Funcţia delete previne adăugarea observaţiei care are o valoare lipsă.

4.3 Instrucţiunea Sum

Instrucţiunea SUM este una simplă şi în acelaşi timp extrem de utilă. Există două utilizări ale sale: una pentru a calcula totaluri cumulative şi alta pentru crearea unui contor – variabilă care este incrementată cu o valoare fixă la fiecare iteraţie.

Sintaxa generală este următoarea:

variabila+increment

Presupunem că avem un set de date cu observaţii privind încasările pe fiecare zi a săptămânii şi dorim un program care să calculeze un total cumulativ.

Iată o primă încercare, fără utilizarea unei instrucţiuni Sum.

ATENŢIE. PROGRAMUL NU ESTE CORECT!

data bani;

input zi : $3.

incasari : dollar6.;

Total = Total + incasari; /* aici programul nu functioneaza corect */

format incasari Total dollar8.;

datalines;

Lun $1,000

Mar $1,500

Mie .

Joi $2,000

Vin $3,000

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • lectia4.doc
  • rezolvari_lectia4.txt
Alte informații:
Tipuri fișiere:
doc, txt
Nota:
7/10 (1 voturi)
Nr fișiere:
2 fisiere
Pagini (total):
16 pagini
Imagini extrase:
16 imagini
Nr cuvinte:
3 864 cuvinte
Nr caractere:
20 756 caractere
Marime:
535.70KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Statistică
Predat:
la facultate
Materie:
Statistică
Sus!