Sunteți pe pagina 1din 19

II.

Pachete software integrate –


SAS
Ptof.Dr. Adina Uta
Import unui fisier Excel in SAS
 
PROC IMPORT
OUT= WORK.nume_set_date_creat
DATAFILE= "cale/nume_fisier.xlsx"
DBMS=xlsx
REPLACE;
SHEET="nume_foaie_de_calcul";
GETNAMES=YES;
RUN;
 
OUT = numele pentru fișierul de date SAS nou creat și unde să stocheze setul de date odată ce este importat.
DATAFILE = unde se gaseste fișierul pe care dorim să îl importăm.
DBMS = identifica tipul de fișier importat.
REPLACE suprascrie un fișier existent.
SHEET = "sheetname" specifica ce foaie ar trebui să importe SAS. Valoarea implicită este ca SAS să citească prima
foaie. Numele foilor pot avea numai 31 de caractere.
GETNAMES = YES (implicit YES) SAS va utiliza automat primul rând de date ca nume de variabile. Dacă primul rând
al foii dvs. nu conține nume de variabile, utilizați GETNAMES = NO.
 
Exportul unui fisier SAS in Excel
 
PROC EXPORT DATA=nume_fisier_SAS
OUTFILE=cale si nume fisier.xlsx'
DBMS = xlsx
REPLACE;
RUN;
II.6. Declaraţii şi proceduri uzuale
• Declaraţia LIBNAME
LIBNAME date 'E:\date sas';
• Declaraţia TITLE
TITLE 'Analiza comenzi‘;
• PROC PRINT
– opţiunea DATA
– opţiunea OBS
– opţiunea LABEL
– declaraţia VAR
– declaraţia BY declaraţia RUN
PROC PRINT data= date.comenzi;
OBS “NrCrt”;
LABEL;
VAR Cod_Produs Cantitate;
RUN;
• PROC CONTENTS
PROC CONTENTS DATA=lib_prod.produse;
RUN;
II.7. Procesare iterativă şi condiţională
Operatori de comparaţie
DATA Angajati;
LENGTH Sex $ 1;
LENGTH Nume $ 20;
INPUT Nume Varsta Sex Salariu;
DATALINES;
Ionescu 33 M 2100
Vasilescu . F 2300
Pop 35 M 2600
Andreescu 48 F 2800
Anton 59 F 3100
Popescu 24 M 2200
Chirita 60 F 3600
Popovici . M 2800
Marin 35 F 3150
Barbulescu 49 M 3200;
TITLE "Angajaţi de sex masculin cu salariul mai mare decât 2500";
PROC PRINT DATA=work.angajati;
WHERE Sex EQ 'M' AND Salariu GE 2500;
VAR Nume Varsta Sex Salariu;
RUN;
Obs. Noobs nu afişează numărul curent al înregistrărilor din setul de date.
Clauza IF
Sintaxa
IF conditie THEN actiune;
sau
IF conditie THEN actiune1
ELSE actiune2;

DATA Angajati;
LENGTH Sex $ 1;
LENGTH Nume $ 20;
INPUT Nume Varsta Sex Salariu;
IF Varsta LT 25 AND NOT MISSING(Varsta)
THEN GrupaVarsta = 1;
ELSE
IF Varsta GE 25 AND Varsta LT 40
THEN GrupaVarsta = 2;
ELSE
IF Varsta GE 40 AND Varsta LT 60
THEN GrupaVarsta = 3;
ELSE
IF Varsta GE 60
THEN GrupaVarsta = 4;
DATALINES;
Ionescu 33 M 2100
Vasilescu . F 2300
Pop 35 M 2600
Andreescu 48 F 2800
Anton 59 F 3100
Popescu 24 M 2200
Chirita 60 F 3600
Popovici . M 2800
Marin 35 F 3150
Barbulescu 49 M 3200
TITLE "Date Angajaţi";
PROC PRINT DATA=Angajati noobs;
RUN;
;
Selectarea observaţiilor
Sintaxa:
IF conditie; • La crearea de noi variabile
pornind de la expresii
unde ‘conditie’ este o expresie SAS condiţionale, SAS stabileşte
data Femei; lăţimea noii variabile în funcţie
length Sex $ 1; valoarea primei observaţii din
input Varsta Sex Proiect Activitate Examen; tabelul rezultat.;
if Sex eq 'F';
datalines; • Alegerea între WHERE
21 M 8 9 8 sau IF pentru selectarea
.F999 înregistrărilor
35 M 8 8 8 – în secţiunile de proceduri se
foloseşte numai instrucţiunea
48 F . . 7 WHERE, nu şi IF;
59 F 9 7 9 – dacă WHERE se foloseşte în
cadrul secţiunii de date,
; atunci expresiile sale
condiţionale trebuie să refere
title "Date studente"; numai variabile din setul de
proc print data=Femei; date de intrare;
– WHERE nu poate folosi în
run; expresii condiţionale bazate
pe variabile create în
secţiunea de date prin
declaraţii de atribuire.
Clauza SELECT
Sintaxa clauzei SELECT este următoarea:
SELECT (expresie de selecţie);
WHEN (expresie_WHEN1) rezultat 1;
WHEN (expresie_WHEN2) rezultat 2;

OTHERWISE rezultat_implicit;
END;
DATA Angajati;
LENGTH Sex $ 1;
LENGTH Nume $ 20;
INPUT Nume Varsta Sex Salariu;
SELECT;
WHEN (MISSING(Varsta)) GrupaVarsta= . ;
WHEN (Varsta LT 25) GrupaVarsta=1;
WHEN (Varsta LT 40) GrupaVarsta=2;
WHEN (Varsta LT 60) GrupaVarsta=3;
OTHERWISE GrupaVarsta=4;
END;
DATALINES;
Ionescu 33 M 2100
Vasilescu . F 2300
Pop 35 M 2600
Andreescu 48 F 2800
Anton 59 F 3100
Popescu 24 M 2200
Chirita 60 F 3600
Popovici . M 2800
Marin 35 F 3150
Barbulescu 49 M 3200
;
TITLE "Date angajaţi cu instrucţiunea SELECT";
PROC PRINT DATA=Angajati;
RUN;
Structuri repetitive – Clauza DO
Sintaxa
Do DATALINES;
Instrucţiune 1; Ionescu 33 M 2100
Instrucţiune 2; Vasilescu . F 2300
... Pop 35 M 2600
Andreescu 48 F 2800
Instrucţiune n;
Anton 59 F 3100
End; Popescu 24 M 2200
DATA Salarii; Chirita 60 F 3600
LENGTH Sex $ 1 Popovici . M 2800
Nume $ 20; Marin 35 F 3150
INPUT Nume Varsta Sex Salariu; Barbulescu 49 M 3200
IF MISSING(Varsta) THEN ;
DELETE;
IF Varsta LE 39 then RUN;
DO; TITLE "Raportul Salariilor
Salariu = 1.15*Salariu; Majorate";
END; PROC PRINT DATA=Salarii
ELSE IF Varsta gt 39 then noobs;
DO; RUN;
Salariu = 1.1*Salariu;
END;
Operaţia de adunare
Sintaxa:
variabilă + increment
• Se reţine variabila;
• Variabila este iniţializată cu 0;
• Valorile lipsă (NULL) sunt ignorate.

DATA Suma_sal;
LENGTH Sex $ 1 Nume $ 20;
INPUT Nume Varsta Sex Salariu;
Suma_sal + Salariu;
DATALINES;
Ionescu 33 M 2100
Vasilescu . F 2300
Pop 35 M 2600
Andreescu 48 F 2800
Anton 59 F 3100
Popescu 24 M 2200
Chir6ita 60 F 3600
Popovici . M 2800
Marin 35 F 3150
Barbulescu 49 M 3200
;
TITLE "Suma salarii ";
PROC PRINT DATA=Suma_sal noobs;
RUN;
Structuri repetitive – Clauza DO cu un număr cunoscut de iteraţii
Sintaxa:
DO contor = val_start TO val_stop BY icrement;
Set_instrucţiuni;
END;
Comanda OUTPUT determină scrierea valorii calculate în setul de date de
ieşire.
Exemplu: salariul de care va dispune angajatul la finalul a cinci ani, plecând de
la un salariu iniţial de 2100 cu o creştere anuală de 5%

DATA Calc_sal;
Crestere_an = .05;
Sal = 2100;
DO An = 1 to 5;
Sal + Crestere_an* Sal;
OUTPUT;
END;
RUN;
TITLE "Evoluţie salariu";
PROC PRINT DATA=Calc_sal noobs;
RUN;
Structuri repetitive – Clauzele DO WHILE şi DO UNTIL
DO WHILE condiţie
Set_instrucţiuni;
END;

DO UNTIL (condiţie)
Set_instrucţiuni;
END;
DATA Calcul_ani;
DATA Calcul_ani;
Crestere_an = 0.1; Crestere_an = 0.1;
Sal = 2100; Sal = 2100;
DO WHILE (Sal LE 3800); DO UNTIL (Sal GE 3800);
An + 1; An + 1;
Sal = Sal + Crestere_an*Sal;
Sal = Sal + Crestere_an*Sal;
OUTPUT;
OUTPUT; END;
END; RUN;
RUN; TITLE "Calcul perioadă";
TITLE "Calcul perioadă"; PROC PRINT DATA= Calcul_ani
noobs;
PROC PRINT DATA= Calcul_ani noobs; RUN;
RUN;
II.8. Manipularea datelor prin funcţii SAS
Funcţii care rotunjesc şi trunchiază valori numerice

ROUND(argument1, .argument2)
Greutate=round(Greutate); Date: 100.7 Rezultat: 101 .
GreutateKg =round(2.2*Greutate,.1); Date: 100.7 Rezultat: 221.5
INT(argument)
Varsta= int(Varsta); 18.8 devine 18

Funcţii care lucrează cu valori lipsă - Iniţializarea variabilelor de


tip character sau numeric

CALL MISSING(listă argumente)


seteaza una sau mai multe variabile numerice şi / sau variabile numerice care lipsesc.
CALL MISSING(X,Y,Z,OF A1–A10);
CALL MISSING(OF X1–X10);
CALL MISSING(OF _ALL_);
CALL MISSING(OF X1–X5,OF Y1–Y5);
II.8. Manipularea datelor prin funcţii SAS -
Funcţii statistice descriptive

N(listă argumente)
N(of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 9
NMISS (listă argumente)
nmiss(of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 9
MEAN(listă argumente) - ignoră valorile lipsă
mean(of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 3.44444
MAX(listă argumente) - ignoră valorile lipsă
max(of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 9
MIN(listă argumente) - ignoră valorile lipsă
min(of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 1
LARGEST (argument1, listă sau interval argumente)
Largest (2,of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 5
SMALLEST (argument1, listă sau interval argumente)
Smallest (2,of Q1-Q10) Date: 4 1 3 9 1 2 3 5 . 3 Rezultat: 2
SUM(listă argumente) sau SUM(interval de valori)
Analizai notelor de la test ale studentilor la primele 10
intrebari (etichetate Q1-Q10) realizand media lor numai
daca exista 7 sau mai multe intrebari la care raspunsurile
au fost notate (ale căror valori nu lipsesc). În plus, se
doreşte să se identifice care dintre întrebări au avut cel
mai mare, respective cel mai mic scor.
data test;
input ID $ Q1-Q10;
if n(of Q1-Q10) ge 7 then Scor = mean(of Q1-Q10);
MaxScore = max(of Q1-Q10);
MinScore = min(of Q1-Q10);
datalines;
001 4 1 3 9 1 2 3 5 . 3
002 3 5 4 2 . . . 2 4 .
003 9 8 7 6 5 4 3 2 1 5;
run;
II.8. Manipularea datelor prin funcţii SAS

Funcţii matematice
ABS(argument)
ABS(x) Date: -2 Rezultat: 2
SQRT (argument)
SQRT(x) Date: 2 Rezultat: 1.4142
Date: -2 Rezultat: .
EXP (argument)
EXP(x) Date: 2 Rezultat: 7.39
Date: -2 Rezultat: 0.14
LOG (argument)
LOG (x) Date: 2 Rezultat: 0.69315
Date: -2 Rezultat: .
Funcţii pentru pentru valori de tip data
SAS poate citi datele în aproape orice formă, dar nu stochează în mod normal
date într-una din aceste formate - convertește toate aceste date într-un
singur număr - numărul de zile de la 1 ianuarie 1960. Perioada după 1
ianuarie 1960 este în numere întregi pozitive; date înainte de 1 ianuarie
1960 sunt cifre negative

mdy(mon,day,year)
data=mdy(mon,day,year); Date: 1 13 2001 Rezultat: Ianuarie, 13, 2001
today()
Datacurenta =today();
Date()
Datacurenta =date();
Time()
Oracurenta =tyme();
DAY(data)
Ziua= DAY (DataAngajare)
QTR(data)
Trimestrul= QTR (DataAngajare)
MONTH (data)
Luna=month(DataAngajare)

YEAR(data)
an=YEAR(DataAngajare)
Funcţii pentru variabile de tip caracter
LENGTH(var)
lengthn(Nume) Popescu 7
UPCASE(var)
UPCASE (nume) popescu POPESCU
PROPCASE (var)
PROPCASE (nume) popescu Popescu
LOWCASE(var)
lowcase(nume) POPESCU popescu
SCAN(argument, n, delimitatori)
Prenume=scan(nume,2,’ ‘) Popescu Ion Ion
SUBSTR (argument,pozitie,<n>)
Asezata in dreapta semnului = returneaza subsirul extras;
Initiala=substr(nume,8,1); PopescuNIon N
Asezata in stanga semnului = se foloseste pentru a inlocui caractere din sir:
substr(test,4,2)=’92’;S7381K2S7392K2
TRIM (argument)
FIND (string,substring,<modifiers>,<startpos> )
INDEX(sursa,extras)
tranwrd (source, target, replacement)

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

  • S 03
    S 03
    Document8 pagini
    S 03
    Diana Alina A
    Încă nu există evaluări
  • Curs 6
    Curs 6
    Document25 pagini
    Curs 6
    Diana Alina A
    Încă nu există evaluări
  • Seminar 6
    Seminar 6
    Document54 pagini
    Seminar 6
    Diana Alina A
    Încă nu există evaluări
  • C5 Cap2 Subsistem BD Part2
    C5 Cap2 Subsistem BD Part2
    Document6 pagini
    C5 Cap2 Subsistem BD Part2
    Diana Alina A
    Încă nu există evaluări
  • Curs Sie 2
    Curs Sie 2
    Document15 pagini
    Curs Sie 2
    Robert Buruleanu
    Încă nu există evaluări
  • Pachete Softwere
    Pachete Softwere
    Document2 pagini
    Pachete Softwere
    Gabriela St
    Încă nu există evaluări
  • Slide Curs 1 Concepte
    Slide Curs 1 Concepte
    Document12 pagini
    Slide Curs 1 Concepte
    Diana Alina A
    Încă nu există evaluări
  • Componentele Seriilor de Timp
    Componentele Seriilor de Timp
    Document10 pagini
    Componentele Seriilor de Timp
    Diana Alina A
    Încă nu există evaluări
  • Jsic 2
    Jsic 2
    Document8 pagini
    Jsic 2
    Diana Alina A
    Încă nu există evaluări
  • Angajati
    Angajati
    Document1 pagină
    Angajati
    Diana Alina A
    Încă nu există evaluări
  • Curs Programare SAS 3
    Curs Programare SAS 3
    Document36 pagini
    Curs Programare SAS 3
    Maria Gheorghe
    Încă nu există evaluări
  • Matrice in Graf Inf
    Matrice in Graf Inf
    Document5 pagini
    Matrice in Graf Inf
    Diana Alina A
    Încă nu există evaluări
  • Curs 3 Programare SAS 2file
    Curs 3 Programare SAS 2file
    Document27 pagini
    Curs 3 Programare SAS 2file
    Diana Alina A
    Încă nu există evaluări
  • SAS - Programare 1
    SAS - Programare 1
    Document14 pagini
    SAS - Programare 1
    Maria Gheorghe
    Încă nu există evaluări
  • Sem Python 1
    Sem Python 1
    Document20 pagini
    Sem Python 1
    Diana Alina A
    Încă nu există evaluări
  • SAS Enterprise Guide 2
    SAS Enterprise Guide 2
    Document8 pagini
    SAS Enterprise Guide 2
    Diana Alina A
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document8 pagini
    Curs 4
    Diana Alina A
    Încă nu există evaluări
  • SAS Enterprise Guide 1
    SAS Enterprise Guide 1
    Document6 pagini
    SAS Enterprise Guide 1
    Diana Alina A
    Încă nu există evaluări
  • Componentele Seriilor de Timp
    Componentele Seriilor de Timp
    Document10 pagini
    Componentele Seriilor de Timp
    Diana Alina A
    Încă nu există evaluări
  • CURS Drept
    CURS Drept
    Document299 pagini
    CURS Drept
    Diana Alina A
    Încă nu există evaluări
  • Curs 11
    Curs 11
    Document12 pagini
    Curs 11
    Diana Alina A
    Încă nu există evaluări
  • Cursuri
    Cursuri
    Document189 pagini
    Cursuri
    Diana Alina A
    Încă nu există evaluări
  • Curs 10
    Curs 10
    Document9 pagini
    Curs 10
    Diana Alina A
    Încă nu există evaluări
  • Seminare
    Seminare
    Document67 pagini
    Seminare
    Diana Alina A
    Încă nu există evaluări
  • Tema 3-Familia PDF
    Tema 3-Familia PDF
    Document19 pagini
    Tema 3-Familia PDF
    Miha Vicentiu
    Încă nu există evaluări
  • Status Si Rol. Grupurile
    Status Si Rol. Grupurile
    Document19 pagini
    Status Si Rol. Grupurile
    Diana Alina A
    Încă nu există evaluări
  • Tema 1 Sociologie Curs
    Tema 1 Sociologie Curs
    Document8 pagini
    Tema 1 Sociologie Curs
    Cristina Lupu
    Încă nu există evaluări
  • Sem Python 1
    Sem Python 1
    Document20 pagini
    Sem Python 1
    Diana Alina A
    Încă nu există evaluări
  • Jsic 2
    Jsic 2
    Document8 pagini
    Jsic 2
    Diana Alina A
    Încă nu există evaluări
  • Sem 4 SAS
    Sem 4 SAS
    Document16 pagini
    Sem 4 SAS
    Andrei Tranca
    Încă nu există evaluări