Sunteți pe pagina 1din 4

6/5/2021 Code: Proiect ISAD.

sas

*2. Crearea seturilor de date SAS pe baza fisierelor de intrare;

data Universitati ;
infile '/home/u47449065/ProiectISAD/Universitati.txt' dlm =';';
length NUME_UNIVERSITATE $ 60
ORAS $ 20;
input ID_UNIVERSITATE NUME_UNIVERSITATE $ ORAS $ NUMAR_FACULTATI NUMAR_STUDENTI LOC_TOP;

run;

PROC PRINT DATA = Universitati;

data Facultati;
infile '/home/u47449065/ProiectISAD/Facultati.txt' dlm =';';
length DENUMIRE $ 90;
input ID_FACULTATE DENUMIRE $ NUMAR_STUDENTI LOCURI_BUGET ID_UNIVERSITATE;

run;

PROC PRINT DATA = Facultati;

*3. Crearea unor subseturi de date folosind clauza WHERE si instructiunea IF;

LIBNAME exemple '/home/u47449065';


DATA Universitati;
LENGTH NUME_UNIVERSITATE $60;
INFILE'/home/u47449065/ProiectISAD/Universitati.txt' dlm =';';
INPUT ID_UNIVERSITATE NUME_UNIVERSITATE $ ORAS $ NUMAR_FACULTATI NUMAR_STUDENTI LOC_TOP;
RUN;

LIBNAME exemple '/home/u47449065';


DATA exemple.Universitati;
SET Universitati;
if missing(LOC_TOP) or LOC_TOP lt 0 then Grup=1;
else if LOC_TOP le 10 then Grup=2;
else Grup=3;
RUN;

PROC PRINT DATA=exemple.Universitati;


VAR ID_UNIVERSITATE NUME_UNIVERSITATE ORAS NUMAR_FACULTATI NUMAR_STUDENTI LOC_TOP GRUP;
RUN;

data Foarte Bune;


set exemple.Universitati;
where LOC_TOP lt 5;
run;

PROC PRINT DATA= Foarte;

data Bune;
set exemple.Universitati;
where LOC_TOP gt 5 and LOC_TOP le 10 ;
run;

PROC PRINT DATA = Bune;

data Mediocre;
set exemple.Universitati;
where LOC_TOP gt 10;
run;
PROC PRINT DATA=Mediocre;

*4. Identificarea înregistrărilor incorecte;

proc print data=Universitati;


where NUMAR_FACULTATI not gt 0 or
NUMAR_FACULTATI is NULL or
NUMAR_STUDENTI not gt 0 or

1/4
6/5/2021 Code: Proiect ISAD.sas
NUMAR_STUDENTI is NULL or
LOC_TOP not gt 0 or
LOC_TOP is NULL;
title "Valori in afara limitelor pentru Universitati";
ID ID_UNIVERSITATE;
Var NUMAR_FACULTATI NUMAR_STUDENTI LOC_TOP;
run;

proc print data=Facultati;


where NUMAR_STUDENTI is null or
LOCURI_BUGET is null;
title "Valori lipsa pentru Facultati";
ID ID_FACULTATE;
Var NUMAR_STUDENTI LOCURI_BUGET;
run;

*5. Ştergerea înregistrărilor cu valoare lipsă sau valori incorecte;

data Facultati_sterse;
set Facultati;
if missing(ID_FACULTATE) or missing(NUMAR_STUDENTI) or missing(LOCURI_BUGET)then delete;
run;
proc print data=facultati_sterse;

data Universitati_filtrate;
set Universitati;
if missing (ID_UNIVERSITATE) or missing (NUME_UNIVERSITATE) or missing (NUMAR_FACULTATI)then delete;
run;
PROC PRINT DATA = UNIVERSITATI_FILTRATE;

data universitati_sterse;
set universitati_filtrate;
if NUMAR_FACULTATI not gt 0 or NUMAR_STUDENTI not gt 0 or LOC_TOP not gt 0 then delete;
run;
PROC PRINT DATA=UNIVERSITATI_STERSE;

*6. Eliminarea valorilor duplicate;

proc freq data=Universitati;


tables ID_UNIVERSITATE/nocum out=frecvente;
run;
proc print data= frecvente;
where count >= 2;
run;

proc sort data=Universitati out=UNIVERSITATI_SORT;


by ID_UNIVERSITATE;
run;

data duplicat;
merge frecvente (in=IND where = (count>1) keep = ID_UNIVERSITATE count) UNIVERSITATI_SORT (in=INP);
by ID_UNIVERSITATE;
if IND and INP;
drop count;
run;
PROC PRINT DATA=duplicat;

proc sort data=Universitati out=unicate nodupkey;


by ID_UNIVERSITATE;
run;

proc freq data=Facultati;


tables ID_FACULTATE/nocum out=frecvente;
run;
proc print data= frecvente;
where count >= 2;
run;

2/4
6/5/2021 Code: Proiect ISAD.sas
proc sort data=Facultati out=FACULTATI_SORT;
by ID_FACULTATE;
run;

data duplicatf;
merge frecvente (in=IND where = (count>1) keep = ID_FACULTATE count) FACULTATI_SORT (in=INP);
by ID_FACULTATE;
if IND and INP;
drop count;
run;

proc sort data=facultati out=unicate nodupkey;


by ID_FACULTATE;
run;

*7. Combinarea seturilor de date;

DATA Universitati;
INPUT ID_UNIVERSITATE NUMAR_STUDENTI;
DATALINES;
120 3300
121 56000
122 30000
;
RUN;

DATA Facultati;
INPUT ID_UNIVERSITATE NUMAR_STUDENTI DENUMIRE $;
DATALINES;
123 25000 Litere
124 15000 Sport
125 40000 Muzica
;
RUN;

data interclasare;
set Universitati Facultati;
by ID_UNIVERSITATE;
RUN;
PROC PRINT DATA = interclasare;

*8. Folosirea de proceduri specifice SQL ;

PROC SQL;
CREATE TABLE Top_5 as
SELECT NUME_UNIVERSITATE, LOC_TOP
FROM Universitati
WHERE LOC_TOP <5 and LOC_TOP >0
GROUP BY ID_UNIVERSITATE
;
QUIT;

title "Top 5 cele mai bune universitati din Romania";


proc print data=Top_5;
run;

*9. Transpunerea datelor;

data IstoricUniversitati ;
infile '/home/u47449065/ProiectISAD/IstoricUniversitati.txt' dlm =';';
length NUME_UNIVERSITATE $ 60;
input ID_UNIVERSITATE NUME_UNIVERSITATE $ NUMAR_STUDENTI AN;

run;

PROC PRINT DATA = IstoricUniversitati;

proc sort data=istoricUniversitati out=istoric_sort;


by ID_UNIVERSITATE;

3/4
6/5/2021 Code: Proiect ISAD.sas
run;

proc transpose data=istoric_sort


out= istoric_transpus (drop = _name_)
prefix = STUDENTI;
by ID_UNIVERSITATE;
id AN;
var NUMAR_STUDENTI;
run;

*10. Agregarea datelor;

data istoric_agregare;
set istoric_transpus;
media_studentilor=mean(of STUDENTI2019-STUDENTI2021);
deviatia_studentilor=std(of STUDENTI2019-STUDENTI2021);
mediana_studentilor=median(of STUDENTI2019-STUDENTI2021);
run;
proc print data=istoric_agregare;

4/4

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