Sunteți pe pagina 1din 52

Introducere

în SAS
CUPRINS Curs

1. Prelucrări analitice
2. Sistemul integrat SAS
3. Programea în limbajul SAS
Definirea conceptului

• Prelucrările analitice (engl. Analytics) reprezintă punerea în


aplicare a tehnologiei informaţiei, a cercetărilor operaţionale şi a
statisticii pentru rezolvarea problemelor din diverse domenii.
• Pot constitui intrări pentru deciziile umane sau pot determina
decizii complet automatizate.

• Sunt considerate o parte a ceea ce este cunoscut sub denumirea


de Inteligenţa afacerii.
Optimizări Cum este cel mai
bine?
Modelare predictivă Ce se va Prelucrări
întâmpla? analitice
Dacă tendinţa
Prognoze
continuă?
Analize
statistice De ce se întâmplă?
competitive

Alerte
Avantaje

Ce se poate face?
Unde este
Interogări/descompuneri
problema? Accesare şi
Cât, cât de des, raportare
Rapoarte ah-hoc
unde?
Rapoarte standard Ce şi când s-a
întâmplat?

Niveluri de prelucrare a datelor


Beneficii ale aplicării prelucrărilor analitice -1

• Ajuta la gestionarea companiei în vremuri neprielnice, prin


oferirea managerilor de instrumente pentru înțelegerea
dinamicii afacerii, incluzând modalitatea în care schimbările
economice și de piață influențează performanța afacerii.
• Pun in valoare investițiile anterioare în IT și în dobândirea de
informații pentru a obține execuții mai rapide și mai multă
valoare adăugată afacerii.
• Asigură o bază pentru luarea deciziilor de-a lungul timpului,
prin folosirea datelor clare, logice si explicite.
Beneficii ale aplicării prelucrărilor analitice -2

• Reduc costurile și îmbunătățesc eficiența. Tehnicile de


optimizare pot minimiza cererea de active, iar modelele
predictive pot anticipa schimbările pe piață și permit
companiilor sa adopte rapid reducerea prețurilor și eliminarea
risipelor.
• Asigură managementul riscului prin folosirea unor metrici
precise și modele pentru managementul riscului.
• Anticipează schimbările în condițiile pieței prin detectarea
șabloanelor în datele extrem de multe referitoare la clienți și
piață.
Categorii de software pentru prelucrări analitice

• Instrumente bazate pe foi de calcul


• Instrumente OLAP
• Software pentru analize statistice - SAS, SPSS, SYSTAT,
STATISTICA, MINITAB, JMP
• Limbaje de programare cu capabilități extinse pentru
prelucrări analitice: R, Python
• Software pentru optimizări
• Instrumente de data mining
• Instrumente de text mining
Sistemul integrat SAS
• A fost dezvoltat la începutul anilor 1970 la North Carolina State
University.
• Intenţia iniţială a fost dezvoltarea unui sistem pentru
managementul şi analiza experimentelor în domeniul agricol.
• La momentul actual este cel mai utilizat software statistic.
• Iniţial a fost acronimul pentru “Statistical Analysis System”,
acum nu mai are acest sens.
• Conţine o mare varietate de module care acoperă aria
prelucrării analitice a datelor şi nu numai.
Funcţii de bază ale SAS
• Introducerea, regăsirea şi managementul datelor
• Realizarea de rapoarte şi grafice
• Analize statistice şi matematice
• Previziuni şi suport decizional
• Cercetări operaţionale şi managementul proiectelor
• Dezvoltarea de aplicaţii
Soluţii SAS dedicate
• Managementul riscurilor
• Detectarea fraudelor
• Managementul clienţilor
Modularizarea SAS
▪ SAS constă dintr-un număr mare de module, pe care
organizaţiile le pot achiziţiona şi instala separat, în funcţie de
necesităţi.
▪ În centrul soluţiilor SAS se află modulul Base SAS. Acesta este
un mediu software integrat, având facilităţi pentru accesul la
date, analiza datelor, crearea de rapoarte etc.
▪ Base SAS beneficiază şi de suportul unui limbaj de
programare proprietar de generaţia a patra.
▪ Există o gamă largă de module sau pachete extind
capabilităţile motorului de bază Base SAS.
Exemple de module SAS
• Base SAS – managementul datelor şi proceduri de bază
• SAS/STAT – analize statistice
• SAS/GRAPH – grafice şi hărţi
• SAS/OR – cercetări operaţionale
• SAS/ETS – econometrie şi analiza seriilor de timp
• SAS/IML – limbaj specializat pentru lucrul cu matrice
• SAS/QC – controlul calităţii
Caracteristici principale
• SAS poate citi orice sursă de date
• Are foarte multe facilități pentru transformarea și modelarea
datelor în scopul prelucrării analitice
• Compania are unii dintre cei mai inovatori angajați în cercetare și
dezvoltare din industrie
• Are avantajul unor investiții de mare anvergură în dezvoltarea
produselor oferite
• Produsele sale sunt bine susținute de suport tehnic
• Foarte multă documentație disponibilă
• Parteneriate educaționale bine susținute
Moduri de lucru în SAS
• Programabil: SAS 9.4, SAS Studio
• Folosind interfeţe generatoare de cod: SAS Enterprise Guide 8.1
• Utilizând medii de dezvoltare în cloud: SAS Viya, SAS Studio

Interacţiunea dintre SAS Enterprise Guide şi un motor SAS


Programe SAS
Un program SAS constă dintr-o succesiune de secțiuni (steps) distincte
trimise către execuţie motorului SAS. În SAS există două tipuri de
secțini: de date și de proceduri.

Secţiunile de date (DATA steps) sunt, de


obicei, folosite pentru a crea și modifica
Fişier tabele SAS.
Text
Secţiune de Secţiune de
date Tabelă proceduri
Raport
SAS
nouă
Tabele
SAS Secţiunile de proceduri (PROC steps) sunt, de
existente obicei, folosite pentru a efectua prelucrări şi
interogări.

Un program SAS poate conține orice combinație de secțiuni de date și


14
de proceduri, în funcție de problema care trebuie rezolvată.
Tipuri de fişiere cu care lucrăm în SAS

ASCII
Externe Fişiere generate de alte aplicaţii

Fişiere în SAS
Interne Temporare – nume pe un nivel
Permanente - nume pe nouă niveluri
(libref.nume)

15
Reguli de sintaxă
Declarațiile SAS au următoarele caracteristici:
◼ Încep, de obicei, cu un cuvânt cheie.

◼ Întotdeuna se termină cu punct şi virgulă.

libname ad_data '/home/nume.prenume';


data ad_data.comenzi;
infile '/home/nume.prenume/comenzi.txt';
input Nr_Comanda 1-5 ID_Produs $ 2-10
Cantitate 13-15 PretVanzare 17-22
Venit 25-32;
run;
proc print data=ad_data.comenzi;
run;
proc means data=ad_data.comenzi;
title 'Analiza comenzilor';
var PretVanzare;
run;
16
Reguli de sintaxă
◼ Unul sau mai multe caractere de spaţiere pot fi folosite pentru
a separa cuvintele.
◼ Declarațiile pot începe şi se pot termina în orice coloană.
◼ O singură declarație se poate scrie pe mai multe rânduri.
◼ Mai multe declarații pot fi scrise pe aceeaşi linie.

libname ad_data '/home/nume.prenume';


data ad_data.comenzi;
infile '/home/nume.prenume/comenzi.txt';
input Nr_Comanda 1-5 ID_Produs $ 2-10
Cantitate 13-15 PretVanzare 17-22
Venit 25-32;
run;
proc print data=ad_data.comenzi;
run;
proc means data=ad_data.comenzi;
title 'Analiza comenzilor';
var PretVanzare; run; 17
Comentarii
◼ Comentarii bloc: /*comentariu*/
◼ Comentarii care pot fi incluse in cod: * comentariu;
◼ cod * comentariu; cod…

/* Creaza tabela SAS ad_data.orders */


libname ad_data '/home/nume.prenume';
data ad_data.comenzi;
infile '/home/nume.prenume/comenzi.txt';
input Nr_Comanda 1-5 ID_Produs $ 2-10
Cantitate 13-15 PretVanzare 17-22 Venit 25-32;
run;
/* Realizeaza un raport lista
pentru ad_data.orders */
proc print data=ad_data.comenzi;
run;

18
Limite ale unei secţiuni

◼ SAS compilează şi execută fiecare secţiune în mod


independent bazandu-se pe ceea ce poartă denumirea de
limite ale unei secţiuni.
◼ Limitele unei secţiuni:
◼ Limite explicite: RUN şi QUIT au rolul de a executa
secţiunea anterioară;
◼ Limite implicite: DATA şi PROC indică începutul unei
secţiuni.
◼ O secţiune de date sau de proceduri se termină atunci
când se întâlneşte o altă secţiune, ceea ce înseamnă că
prezenţa declaraţiilor RUN şi QUIT nu este obligatorie.

19
Crearea seturilor de date din fișiere
externe
Pentru a aplica proceduri specifice SAS, datele trebuie să fie
disponibile în seturi de date SAS.
Dacă datele nu se regăsesc în formatul specific SAS, atunci
există următoarele alternative de lucru:
➢ Crearea de seturi de date prin introducerea de date în
codul sursă prin care se crează setul de date (cu
DATALINES).
➢ Citirea datelor disponibile în fișiere flat. Acestea nu sunt
fișiere proprietare, iar înregistrările conțin valori care sunt
organizate în câmpuri.
➢ Accesarea datelor create prin intermediul altor aplicații,
spre exemplu MS Excel, Oracle, SPSS.
Indiferent de modalitatea de introducere a datelor sursă, se va
folosi secțiunea de date pentru a citi datele de intrare și a crea
20
setul de date rezultat.
Date furnizate în codul sursă
◼ Trebuie furnizate valorile datelor în interiorul secțiunii de date prin
declarația DATALINES (sau CARDS – un alias al acestei declarații,
provenit dintr-o versiune mai veche a limbajului).
◼ Setul de date de mai jos se salvează în biblioteca WORK (are numele pe
un singur nivel), fiind deci temporar.

data comanda;
input varsta gen $ id_prod cantitate data mmddyy8.;
format data yymmdds10.;
datalines;
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=comanda; by descending data;
proc print data=comanda;
title ‘Comenzi neonorate';
21
Înțelegerea structurii seturilor de date
Un set de date SAS este format din două zone:
➢ Zona de descriere = conține informații care caracterizează setul
de date per ansamblu, cum ar fi numele setului de date, data
creării, descrierea fiecărei variabile (nume, tip, lungime) etc.
Aceste informații poartă denumirea de metadate și pot fi
vizualizate cu procedura CONTENTS.
PROC CONTENTS DATA = set_date;
➢ Zona de date = conține datele propriu-zise ale setului de date,
care pot fi vizualizate cu o multitudine de proceduri, printre care
cea mai utillizată este PRINT.
PROC PRINT DATA = set_date;

22
Convenții de denumire specifice SAS

Numele specificate de către utilizatori în SAS pentru o multitudine


de elemente ale limbajului, precum seturi de date, variabile,
proceduri, referințe la bibiloteci, formate etc. trebuie să respecte o
serie de convenții de denumire:
▪ numele începe cu o literă sau cu caracterul ” _” underscore;
▪ conţine litere, cifre sau caracterul underscore;
▪ are o lungime de maximă predefinită (spre exemplu, 32 de
caractere pentru numele de variabile și seturi de date, 8
caractere pentru referințe la biblioteci);
▪ nu este case sensitive;
▪ nu poate conține spații.

23
Tipuri de date
SAS a simplificat lucrul cu tipuri de date, existând date de tipul
numeric și de tipul caracter. Implicit, variabilele unui set de date
pot fi de tip numeric sau caracter.
▪ Variabilele numerice pot memora și valori în format științific și
sunt implicit stocate pe 8 octeți. Variabilele de tip caracter pot
memora până la 32.767 de caractere, fiecare caracter fiind stocat
pe un octet.
▪ Valorile de tip dată și timp sunt stocate în SAS ca și valori
numerice. Valoarea unei date calendaristice SAS este stocată
intern sub forma numărului de zile dintre data de 1 ianuarie 1960
și data specificată, putând fi un număr pozitiv sau negativ.
Valoarea de tip timp în SAS este stocată sub forma numărului de
secunde care s-au scurs de la miezul nopții în ziua curentă, deci
este o valoare între 0 și 86400.

24
Biblioteci SAS -1
◼ O bibliotecă SAS este o colecţie care include unul sau mai multe
fişiere SAS care sunt recunoscute de SAS şi care sunt referite şi
stocate în mod unitar.
◼ Sintaxa este:
LIBNAME libref ‘Biblioteca-SAS‘;
▪ LIBNAME – defineşte o bibliotecă.
▪ libref – este o referinţă la o bibliotecă, un alias pentru o locaţie fizică
unde se găsesc fişierele incluse în bibliotecă.
▪ ‘Bilioteca-SAS‘ – este locaţia fizică propriu-zisă
LIBNAME exemple ‘C:\curs‘;
◼ LIBNAME nu este parte a unei secţiuni de date sau de proceduri şi
nu are nevoie de RUN pentru a rula.
◼ Referința la o bibliotecă rămâne valabilă până când aceasta se
anulează sau se schimbă sau până când se termină sesiunea SAS.

25
Biblioteci SAS -2
◼ Libref trebuie să refere un director existent, deoarece prin această
declarație nu se creează un nou director.
◼ Se pot defini oricâte declaraţii LIBNAME.
◼ Biblioteca Work este temporară şi se iniţializează la deschiderea
sesiunii de lucru SAS.
◼ Vizualizarea conținutului unei biblioteci se face cu procedura
CONTENTS.

PROC CONTENTS DATA= lifref._ALL_ NODS;


RUN;

◼ Opțiuni: _ALL_ include toate fișierele din bibliotecă, iar NODS nu


include zona de descriere a unui set de date.

26
Crearea seturilor de date din fișiere flat

Delimitatorul spaţiu
Considerând că avem un fişier numit exemplu1.txt care conţine
numele, preţul şi categoria a șase tipuri de copaci vândute,
fiecare având valoarea separată printr-un spaţiu, acesta ar avea
următoarea formă:
brad 40 conifer
molid 25 conifer
fag 42 foios
stejar 27 foios
liliac 33 arbust
alun 38 arbust
data exemplu1;
infile '/home/nume.prenume/exemplu1.txt';
input Nume $ Pret Categorie $;
run;
27
Delimitatorul virgulă

Pentru fişierul de date:


brad,40,conifer
molid,25,conifer
fag,42,foios
stejar,27,foios
liliac,33,arbust
alun,38,arbust
Se vor folosi următoarele declaraţii pentru a obţine setul de date exemplu2:
data exemplu2;
infile '/home/nume.prenume/exemplu2.txt' dsd;
input Nume $ Pret Categorie $;
run;
28
Alţi delimitatori

• Pentru orice alt tip de delimitatori, instrucţiunea infile


trebuie folosită împreună cu opţiunea dlm sau delimiter.
Au aceeaşi seminificaţie, prima fiind abrevierea celeilalte.
Exemplu:
infile 'c:\date sas\produse.txt' delimiter='/';
sau
infile 'c:\date sas\produse.txt' dlm='/';.

29
Fişiere cu date în coloane cu lăţime fixă

Cel de-al doilea tip de fişiere flat pe care SAS poate să le


citească sunt cele care conţin date în coloane cu lăţime
fixă. 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 citite în orice ordine este necesară, iar
valorile lipsă pot fi specificate prin tot atâtea spaţii libere
cât are şi lăţimea coloanei.

30
Fişiere cu date în coloane cu lăţime fixă
- exemplu
Considerăm un fișier în care valorile din fiecare camp incep de la o
anumita poziție:
brad 40 conifer
molid 25 conifer
fag 42 foioase
stejar 27 foioase
liliac 33 arbusti
alun 38 arbusti

Aşa cum se poate observa, numele are maxim 6 caractere, preţul 2, iar
categoria 7.

31
Fişiere cu date în coloane cu lăţime fixă
• Metoda 1: Coloane de intrare foloseşte declaraţia INPUT
specificând pentru fiecare variabilă numele său, semnul $ pentru
variabilele caracter, precum şi poziţia de început şi de sfârşit a fiecărei
variabile în linia de date.
*citire fisier text cu latime fixa metoda coloane de
intrare;
data exemplu3;
infile "/home/nume.prenume/exemplu3.txt";
input Nume $ 1-6
Pret 8-9
Categorie $ 10-17;
run;

32
Fişiere cu date în coloane cu lăţime fixă

• Metoda 2: Intrări formatate poate citi diferite tipuri de


formate, cum ar fi monedă (numere având semnul dolar sau
euro), numere cu zecimale, date în diferite formate.
• Declaraţia INPUT are umătoarele opţiuni: semnul @ urmat de
poziţia de început a variabilei în linia de date, numele variabilei,
formatul variabilei, dacă acesta este necesar, precum şi lăţimea
coloanei asociată variabilei.

INPUT @pozitie nume_varialilă format lăţime.

33
Exemplu metoda 2
*citire fisier text cu latime fixa metoda intrari
formatate;
data exemplu4;
infile '/home/nume.prenume/exemplu4.txt';
input @1 Nume $6.
@8 Pret dollar3.
@12 Categorie $7.;
format Pret dollar6.0;
/*
datalines;
brad $40 conifer
molid $25 conifer
fag $42 foioase
stejar $27 foioase
liliac $33 arbusti
alun $38 arbusti */
run;

34
Asignarea de etichete

▪ Declarația LABEL asignează etichete variabilelor din setul de


date de ieșire.
▪ Multe proceduri SAS folosesc etichetele variabilelor pentru a
îmbunătăți întelegerea semnificației datelor.
▪ Echichetele se pot crea și în secțiunile de date, și în cele de
proceduri.
LABEL variabila1 = “Eticheta1”….. ;
▪ Într-o singură declarație LABEL se pot defini etichete pentru
oricâte variabile.
▪ Pot avea până la 256 de caractere scrise între ghilimele simple
sau duble.
▪ Redefinirile ulterioare suprascriu definirile inițiale ale valorilor
etichetelor. 35
Asignarea de etichete - exemplu
***Definire etichete in sectiunea de date;
DATA agenti;
INPUT Cod Oras$ Vanzari;
LABEL Cod = "Cod agent"
Vanzari = "Vanzari trim I";
DATALINES;
1101 BZ 100000
1102 CJ 250000
1103 BU 400000
1104 CJ 270000
1105 BU 150000
1106 BZ 80000
;
RUN;
***Utilizare etichete in sectiunea de proceduri;
PROC PRINT DATA =agenti LABEL;
RUN;
***Definire si utilizare etichete in sectiunea de proceduri;
PROC PRINT DATA =agenti LABEL;
LABEL Oras = "Filiala" Cod = "Cod agent vanzari";
36
RUN;
Formate SAS de afișare
În SAS există formate de citire și formate de afișare. Formatele de
citire oferă instrucțiuni despre modul cum se citesc datele din
fișierele externe. Formatele de afișare oferă instucțiuni despre
modul cum se vor afișa datele din setul de date.
▪ Ambele tipuri de formate pot fi predefinite în SAS sau definite
de utilizator.
▪ Atunci când se creează un format definit de utilizator, acesta nu
este asociat unei anumite variabile sau set de date, ci bazându-
ne pe valorile pe care vrem să le afișăm diferit.
▪ Formatele vor fi disponibile pe parcursul unei sesiuni SAS, cu
excepția cazului în care se crează formate persistente.
▪ După definire, formatele se aplică variabilelor în diferite
proceduri SAS.
37
Sintaxa formate SAS de afișare
❖ Definirea de formate
PROC FORMAT;
VALUE <$>nume_format listă_valori_iniţiale1 = val_afis1
<_same_>
listă_valori_iniţiale2 = val_afis2
other = val_afis3;
– Valorile din listă se separă prin virgulă şi, pentru cele de tip
caracter, se includ între ghilimele.
– Se pot defini mai multe formate de afişare în aceeaşi procedură.
❖ Utilizarea formatului în alte proceduri

FORMAT variabila <$> nume_format. ;


❖ Formate persistente
libname formate '/home/nume.prenume';
options fmtsearch=(formate);
proc format library = formate;
38
Utilizare formate SAS de afișare
***Definire formate definite de utilizator;
PROC FORMAT;
VALUE $oras 'BU'='Bucuresti'
'BZ'='Buzau'
'CJ'= 'Cluj'
other='Gresit';

VALUE nivel low-<100000='Nivel1'


100000-200000='Nivel2'
200000<-high='Nivel3';
RUN;

***Aplicare formate definite de utilizator;


PROC PRINT DATA =agenti LABEL;
FORMAT oras $oras. Vanzari nivel.;
RUN;

39
Cum lucrează SAS -1
▪ Secțiunea de date se execută în întregime o dată pentru fiecare
înregistrare. SAS procesează sețiunea de date în două faze:
▪ faza de compilare
▪ faza de execuție
1. Faza de compilare:
▪ SAS scanează fiecare declarație din secțiunea de date pentru
erori de sintaxă.
▪ SAS creează un buffer de intrare în care memorează datele din
fișierul flat, acest lucru fiind valabil numai pentru citirea din fișiere
flat, nu și din seturi de date SAS.
▪ Apoi SAS creează PDV (Program Data Vector), o zonă de
memorie realizată în timpul procesării secțiunii de date care are
rolul de a ajuta la construirea observației curente.
▪ Zona de descriere a unui set de date este creată la sfârșitul fazei
40
de compilare.
Cum lucrează SAS -2
Structura PDV (Program Data Vector)
_N_ _ERROR_ Var1 Var2 ...... Varn

1 0

• PDV conține două tipuri de variabile:


– Permanente (variabilele setului de date și cele calculate)
– Temporare (automate și definite în opțiuni)
• Automate ; _N_ (contorul care arată numărul iterației) și
_ERROR_ (semnalizează existența unei erori în acea iterație)
• Definite în opțiuni (first.var_grupare, last.var_grupare,
in=variabila)
• Pe parcursul compilării declației INPUT, SAS adaugă câte
un element în PDV pentru fiecare variabilă din noul set de
date, determinând atribute cum ar fi lățimea sau tipul.
• Lățimea implicită a unei variabile este de 8 octeți (dacă nu
41
se specifică altă valoare la citirea datelor).
Cum lucrează SAS -3

Compilare Program Faza de compilare

Initializeaza variabile Faza de execuție


cu valori lipsă

Execută declarația Sfârșit DA


Următoarea secțiune
INPUT fișier?

Execută alte
declarații NU

Copiază în setul de 42
date de ieșire
Cum lucrează SAS -4
2. Faza de execuție:
• Execuția începe atunci când compilarea s-a realizat cu
succes.
• La începutul fazei de execuție, este inițializat PDV, _N_ cu 1,
_ERROR_ cu 0 și toate celelalte variabile cu valoarea lipsă.
• Se citește o înregistrare din fișierul de intrare și se pune în
buffer. Apoi, în PDV, se populează zona alocată pentru
fiecare variabilă din declarația INPUT cu valorile din buffer.
La sfârșit, SAS scrie valorile din PDV în noul set de date (cu
excepția celor temporare).
• Controlul este returnat la începutul secțiunii de date
pentru o nouă iterație în care _N_ este incrementat.
• Se reia procesul până la terminarea datelor din fișierul de
43
intrare.
Declarația INPUT - Omiterea locației unei
coloane
Pentru a putea omite locația unei coloane dintr-un fișier flat, la
citirea datelor în vederea creării unui set de date SAS, datele
trebuie să satisfacă următoarele condiții:
• Fiecare valoare este separată de următoarea prin cel puțin un
spațiu libar sau un delimitator (dacă folosim opțiunea DLM).
• Orice valoare lipsă este reprezentată prin spații (pentru
ambele tipuri de variabile).
• Valorile tuturor variabilelor de tip caracter au maxim 8
caractere și nu includ spații, în caz contrar se produc
trunchieri ale datelor.
Observație! În seturile de date SAS valorile lipsă sunt
reprezentate prin punct pentru variabilele numerice și spațiu
pentru cele de tip caracter. 44
Declarația INPUT - Plasarea mai multor
observații scurte pe aceeași linie
Pentru fișierele cu puține variabile și observații scurte, este o
practică des întâlnită plasarea mai multor observații pe
aceeași linie. Pentru a folosi această abordare, trebuie avute în
vedere următoarele aspecte:
• Datele de intrare trebuie să îndeplinească cele trei condiții
amintite în slide-ul anterior.
• Se pot pot pune numere diferite de observații pe linii
diferite.
• Se poate folosi declarația INPUT fără a preciza locația
coloanei plasând la sfârșitul declarației simbolurile “@@”
înainte de “;”.

45
Plasarea mai multor observații scurte pe
aceeași linie - exemplu
*Plasarea mai multor observatii pe aceeasi linie;
DATA studenti;
INPUT cod nota @@;
DATALINES;
1101 7 1102 9 1103 10 1104 7 1105 5 1106 8 1107 6 1108 10
1109 9 1110 7 1111 8 1112 5 1113 9 1114 10 1115 8 1116 7
;
RUN;

46
De lucru!
❖Dorim să importăm datele din fișierul exemplu5.txt:
brad 40 conifere
molid 25 conifere
fag 42 foiaose
stejar 27 foiaose
liliac 33 arbusti
alun 38 arbusti
cires 39 fructifere
mar 25 fructifere

❖Rulăm codul:
LIBNAME date "/home/nume.prenume";
data date.exemplu5;
infile '/home/nume.prenume/exemplu5.txt';
input Nume $ Pret Categorie $; 47
run;
De lucru!
❖Ce observați în rezultate?
❖Care credeți că este cauza?
❖O soluție o reprezintă stabilirea lățimii unei variabile prin
declarația LENGTH, având următoarea sintaxă:
LENGTH variabil_1 ... variabila_n <$> latime
Semnul $ indică faptul că variabilele dinaintea lui sunt de tip
caracter.
❖Rulăm din nou codul:
data date.exemplu5;
infile '/home/nume.prenume/exemplu5.txt';
length Categorie $ 10;
input Nume $ Pret Categorie $;
run;
48
1. Care variantă produce un set de date de ieșire corect?
*1;
data iesire;
INPUT var1 var2$ @@;
DATALINES;
01 aaaaaaaaa 02 bbbbbbbbb 03 ccccccccc
;
*2;
data iesire;
INPUT var1 var2 $ @@;
DATALINES;
01 aaaaaaaa 02 bbbbbbbb 03 cccccccc
;
*3;
data iesire;
INPUT var1 var2 @@;
DATALINES;
01 aaaaaaaa 02 bbbbbbbb 03 cccccccc
49
;
2. Dacă nu specificați opțiunea LIBRARY = în cadrul instrucțiunii PROC
FORMAT, formatele se for salva în biblioteca Work.Formats și vor exista:
a) Doar în procedura curentă
b) Doar in secțiunea de date curentă
c) Doar în sesiunea SAS curentă
d) Permanent

3. Identificați enunțul fals din cele de mai jos.


Declarația VALUES din procedura FORMAT poate specifica:
a) O singură valoare, cum ar fi 24 sau ‘R’
b) Un domeniu de valori, cum ar fi 0-1500
c) Un domeniu de valori caracter, cum ar fi ‘A’-’Z’
d) O listă de valori numerice și caracter, separate prin virgulă, cum ar fi:
90, ‘B’, 348, ‘D’, 134

50
4. Formatul pozitie a fost create cu procedura FORMAT. Identificați
varianta corectă de aplicare a formatului asupra variabilei pozitie:
a) format pozitie pozitie;
b) format pozitie pozitie.;
c) format pozitie=pozitie;
d) format pozitie=‘pozitie’;

5. Ce modalitate de citire a datelor trebuie folosită pentru setul de date


următor?

51
6. Formatele de afișare în SAS:
a) Se aplică pe fișiere de tip text
b) Afectează datele din tabele
c) Afectează modul de afișare a datelor
d) Se folosesc în secțiunile de date
e) Se folosesc în secțiunile de proceduri

7. În codul SAS se mai jos:


PROC PRINT DATA = date LABEL;
FORMAT tara $tara. venit venit.;
RUN;

a) Sunt definite două formate de afișare de tip caracter


b) Sunt definite un format de afișare de tip caracter și un format de
afișare de tip numeric
c) Sunt folosite două formate de afișare de tip caracter
d) Sunt folosite un format de afișare de tip caracter și un format de
afișare de tip numeric
e) Se vor afișa etichete corespunzătoare variabilelor
52

S-ar putea să vă placă și