Procesări Condiționate ale Datelor

Previzualizare laborator:

Extras din laborator:

Lecţia 3. Procesări condiţionate ale datelor

3.1 Introducere

3.2 IF şi ELSE IF

3.3 Subsetting IF

3.4 Operatorul IN

3.5 Instrucţiunea SELECT

3.6 Operatorii logici AND, OR, şi NOT

3.7 Instrucţiunea WHERE

3.8 Aplicaţii propuse

3.1 Introducere

Acest capitol descrie instrumentele care permit programelor să “ia decizii” bazate pe valorile datelor. De exemplu, se doreşte citirea valorii variabilei Varsta şi crearea unei variabile care să reprezinte categoria de vârstă. Sau se doreşte să se determine dacă valorile pentru o anumită variabilă se găsesc într-un interval. Programele care realizează astfel de operaţii vor conţine procesări condiţionate – abilitatea de a lua decizii logice bazate pe valorile datelor.

3.2 Instrucţiunile IF şi ELSE IF

Două dintre instrucţiunile condiţionate de bază sunt IF şi ELSE IF.

Sintaxa generală a instrucţiunii IF este următoarea:

IF condiţie THEN instrucţiune;

Instrucţiunea ELSE IF se foloseşte astfel:

IF condiţie1 THEN instrucţiune1;

ELSE IF condiţie2 THEN instrucţiune2;

ELSE IF …

Pentru a înţelege cum funcţionează aceste instrucţiuni, considerăm exemplul în care avem următoarele informaţii pentru studenţii unei grupe:

- varsta (în ani)

- gen (M sau F)

- medie1 (media în anul I de studii)

- nota (nota la un examen de la 4 la 10)

Prima aplicaţie va fi crearea unei noi variabile care să reprezinte categoria de vârsta. Iată o primă încercare.

ATENŢIE: PROGRAMUL NU ESTE CORECT!

data conditional;

length gen $ 1;

input varsta gen medie1 nota;

if varsta lt 20 then cat_varsta = 1;

if varsta ge 20 and varsta lt 40 then cat_varsta = 2;

if varsta ge 40 and varsta lt 60 then cat_varsta = 3;

if varsta ge 60 then cat_varsta = 4;

datalines;

21 M 8.80 6

. F 7.90 5

35 M 9.87 10

48 F . 8

59 F 6.95 5

15 M 7.88 .

67 F 8.97 9

. M 8.62 8

35 F 9.77 9

49 M 6.59 7

;

title "Afisare CONDITIONAL";

proc print data=conditional;

run;

În tabelul următor sunt prezentaţi toţi operatorii relaţionali:

Comparaţie logică Mnemonică Simbol

egal EQ =

diferit NE ^= sau ~= sau ¬=

mai mic LT <

Mai mic sau egal LE <=

Mai mare GT >

Mai mare sau egal GE >=

Egal cu un element dintr-o lista IN

Revenind la programul anterior, vom explica de ce logica folosită este incorectă. Eroarea este legată de felul în care SAS tratează valorile numerice lipsă (missing values). Acestea sunt tratate ca fiind cele mai mici valori negative posibile. Prima instrucţiune IF verifică dacă vârsta este mai mică decât 20 şi include datele care satisfac această condiţie în categoria de vârstă 1. În consecintă, toate observaţiile în care lipseşte valoarea varsta vor fi incluse greşit în categoria de varsta 1. Este un exemplu de program care nu are erori de sintaxă, care rulează fără niciun avertisment sau mesaj de eroare în fereastra LOG, dar care produce rezultate incorecte.

Există mai multe moduri în care se poate evita includerea valorilor lipsă în categoria de varsta 1:

if varsta lt 20 and varsta ne . then cat_varsta = 1;

sau

if varsta ge 0 and varsta lt 20 then cat_varsta = 1;

sau

if 0 le varsta lt 20 then cat_varsta = 1;

sau

if varsta lt 20 and not missing(varsta) then cat_varsta = 1;

Observaţiile cu valori lipsă ale varstei vor avea valori lipsă şi pentru categoria de varsta.

Programul mai poate fi îmbunătăţit. Dacă o persoană are mai puţin de 20 de ani, condiţia de la primul IF va fi adevărată şi persoana va fi inclusă în prima categorie de vârstă. Cu toate acestea, se execută mai departe şi celelalte IF-uri (cu toate că ele vor fi false şi categoria de vârstă va rămâne 1). O mai bună modalitate este folosirea instrucţiunii ELSE IF.

data conditional;

length gen $ 1;

input varsta gen medie nota1;

if varsta lt 20 and not missing(varsta) then cat_varsta = 1;

else if varsta ge 20 and varsta lt 40 then cat_varsta = 2;

else if varsta ge 40 and varsta lt 60 then cat_varsta = 3;

else if varsta ge 60 then cat_varsta = 4;

datalines.

Download gratuit

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

Structură de fișiere:
  • angajati.sas7bdat
  • biciclete.sas7bdat
  • blood.sas7bdat
  • lectia3.doc.doc
  • rezolvari_lectia3.txt
Alte informații:
Tipuri fișiere:
doc, txt, sas7bdat
Nota:
7/10 (1 voturi)
Nr fișiere:
5 fisiere
Pagini (total):
8 pagini
Imagini extrase:
8 imagini
Nr cuvinte:
2 105 cuvinte
Nr caractere:
11 437 caractere
Marime:
64.56KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Statistică
Predat:
la facultate
Materie:
Statistică
Sus!