Documente Academic
Documente Profesional
Documente Cultură
Crearea mai multor subset-uri de date SAS într-un singur DATA Step
DATA barbati femei;
SET exemple.sondaj;
IF gen = 'F' THEN OUTPUT femei;
ELSE if gen = 'M' THEN OUTPUT barbati;
RUN;
• instrucțiunea OUTPUT
II.9.3. Combinarea de tabele SAS
Conbinarea Unu la Unu
DATA tabela-rez;
SET tabela-1;
SET tabela-2;
RUN;
II.9.3. Combinarea de tabele SAS
Concatenarea
Tabelele nu au aceiaşi structura
DATA concat;
SET A B;
RUN;
DATA table_rez;
MERGE Produse Vanzari;
BY Cod;
RUN;
II.9.3. Combinarea de tabele SAS
Actualizare
PROC SORT DATA=preturi;
BY Cod;
RUN;
PROC SORT DATA= Preţuri-actualizate; instructiune UPDATE
BY Cod;
RUN;
DATA Preturi_15dec2005;
UPDATE Preturi Preţuri_actualizate;
BY Cod;
RUN;
II.10. Proceduri specifice SQL
Sintaxa:
PROC SQL;
comandă _sql;
QUIT;
PROC SQL;
SELECT Id,
Inaltime,
Greutate
FROM exemple.date
WHERE Greutate GT 66;
QUIT;
Dacă doriți să selectați toate variabilele dintr-un set de date, puteți utiliza un asterisc (*)
PROC SQL;
SELECT *
FROM exemple.date
WHERE Greutate GT 66;
QUIT;
Dacă doriți ca rezultatul interogării să fie stocat într-un set de date SAS, includeți un cuvânt cheie CREATE
PROC SQL;
CREATE TABLE tabela1 AS
SELECT *
FROM exemple.date
WHERE Greutate GT 66;
QUIT;
II.10. Proceduri specifice SQL
II.10.1.
PROC SQL; Joncţiunea a două tabele (Merge)
SELECT tabela1.Id,
tabela2.Id,
Inaltime,
Greutate,
Nume,
Gen
FROM exemple.
tabela1,
exemple.
Tabela2;
QUIT;
II.10. Proceduri specifice SQL
II.10.1. Joncţiunea a două tabele (Merge)
PROC Distincția
SQL; între două coloane cu acelaşi nume.
SELECT t1.Id AS Id_
tabela1, Jonctiune INNER JOIN - Sunt enumerați
t2.Id AS Id_ numai subiecții care se află în ambele tabele.
tabela2,
Inaltime,
PROC SORT DATA= exemple. tabela1
Greutate, OUT= tab1;
Nume, BY Id;
Gen RUN;
PROC SORT DATA= exemple. tabela2
FROM exemple. tabela1 OUT= tab2;
AS t1, BY Id;
exemple. tabela2 RUN;
DATA inner;
AS t2
MERGE tab1 (IN=in1)
WHERE t1.Id EQ t2.Id ; tab2 (IN=in2);
QUIT; BY Id;
Echivalent cu IF in1 AND in2;
RUN;
TITLE " Inner Join cu DATA Step";
PROC PRINT DATA=inner;
ID Id;
RUN;
II.10. Proceduri specifice SQL
II.10.1. Joncţiunea a două tabele (Merge)
Jonctiunea INNER JOIN
PROC SQL;
SELECT t1.Id AS Id_ tabela1,
t2.Id AS Id_ tabela2,
Inaltime,
Greutate,
Nume,
Gen
FROM exemple. tabela1 AS t1 INNER
JOIN
exemple. tabela2 AS t2
ON t1.Id EQ t2.Id ;
QUIT;
II.10. Proceduri specifice SQL
II.10.1. Joncţiunea a două tabele (Merge)
Jonctiunea LEFT JOIN
PROC SQL;
TITLE "Left Join";
SELECT t1.Id AS Id_ tabela1,
t2.Id AS Id_ tabela2,
Inaltime,
Gen
FROM exemple.tabela1 AS t1 LEFT
JOIN
exemple.tabela2 AS t2
ON t1.Id EQ t2.Id ;
QUIT;
II.10. Proceduri specifice SQL
II.10.1. Joncţiunea a două tabele (Merge)
Jonctiunea RIGHT JOIN
PROC SQL;
TITLE "Left Join";
SELECT t1.Id AS Id_ tabela1,
t2.Id AS Id_ tabela2,
Inaltime,
Gen
FROM exemple.tabela1 AS t1 RIGHT
JOIN
exemple.tabela2 AS t2
ON t1.Id EQ t2.Id ;
QUIT;
II.10. Proceduri specifice SQL
II.10.1. Joncţiunea a două tabele (Merge)
Jonctiunea FULL JOIN
PROC SQL;
TITLE "Left Join";
SELECT t1.Id AS Id_ tabela1,
t2.Id AS Id_ tabela2,
Inaltime,
Gen
FROM exemple.tabela1 AS t1 FULL
JOIN
exemple.tabela2 AS t2
ON t1.Id EQ t2.Id ;
QUIT;
II.10. Proceduri specifice SQL
Concatenarea seturilor de date prin PROC SQL
Operatorul
UNION
II.10. Proceduri specifice SQL
Concatenarea seturilor de date prin PROC SQL
PROC SQL;
CREATE TABLE tabela_rez
AS
SELECT *
FROM exemple.tabela2
UNION ALL CORRESPONDING
SELECT *
FROM exemple.tabela3
QUIT;
II.10. Proceduri specifice SQL
Utilizarea funcţiilor Summary în PROC SQL
•Instructiunea MEAN
•Optiunea CALCULATED
PROC SQL;
SELECT Id,
Inaltime,
Greutate,
MEAN(Inaltime) AS Inaltime_Medie,
100* Inaltime /CALCULATED Inaltime_Medie AS Procent
_Inaltime
FROM exemple.tabela1
QUIT;
II.10. Proceduri specifice SQL
Utilizarea funcţiilor Summary în PROC SQL
PROC SQL;
SELECT Id,
Inaltime,
Greutate,
FROM exemple.tabela1
ORDER BY Inaltime;
QUIT;
II.10. Proceduri specifice SQL
Utilizarea funcţiilor Summary în PROC SQL
PROC SQL;
SELECT Id,
t2.Nume AS tabela2_nume,
t4.Nume AS tabela4_nume
FROM exemple.tabela2 AS t2,
exemple.tabela4 AS t4
WHERE SPEDIS(tabela2_nume , tabela4_nume ) LE
25;
QUIT;
II.11. Prelucrarea variabilelor cu ajutorul
masivelor
DATA date1;
SET exemple.date;
ARRAY matrice{3} Inaltime Greutate Varsta;
DO i = 1 TO 3;
IF matrice{i} = 999 THEN matrice{i} = .;
END;
DROP i;
RUN;
II.11. Prelucrarea variabilelor cu ajutorul masivelor
•Cuvântul cheie _CHARACTER_
•Funcția DIM
Următorul program folosește o matrice de caractere pentru a converti toate valorile NA (nu se
aplică) sau semnul de întrebare (?) la o valoare lipsă SAS.
DATA tabela_Lipsă;
SET exemple. tabela5;
ARRAY var_car {*} $ _CHARACTER_;
DO loop = 1 TO DIM(var_car);
IF var_car {LOOP} IN ('NA' '?') THEN
CALL MISSING(var_car {LOOP});
END;
DROP loop;
RUN;
Conversia tuturor valorilor de caractere dintr-un set de date SAS la litere mici.
DATA tabela_rez;
SET exemple.tabela6;
ARRAY matrice{*} _CHARACTER_;
DO i = 1 TO DIM(matrice);
matrice{i} = LOWCASE(matrice{i});
END;
DROP i;
RUN;
II.11. Prelucrarea variabilelor cu ajutorul masivelor
DATA contabilitate;
INPUT ID Venit1999- Venit2006;
ARRAY venit{1999:2006} Venit1999– Venit2006;
ARRAY taxe{1999:2006} Taxe1999-Taxe2006;
DO An = 1999 TO 2006;
Taxe{An} = .25*Venit{An};
END;
DROP An;
FORMAT Venit1999- Venit2006
Taxes999-Taxe2006 dollar10.;
DATALINES;
001 45000 47000 47500 48000 48000 52000 53000 55000
002 67130 68000 72000 70000 65000 52000 49000 40100
;