data g1; *zbior nr 1; input id imie $ wiek; datalines; 1 Anna 20 3 Ala 24 5 Piotr 23 ; run; data g2; *zbior nr 2; input id imie $ wiek; datalines; 2 Adam 29 4 Pawel 22 6 Piotr 30 ; run; data g1_2; *zloczenie zbiorow - wynikowy zbior to rekordy z g1 oraz "doklejone" g2; set g1 g2; *uwaga zbior g1 oraz g2 maja identyczna strukture kolumn; run; * analogiczne zloczenie za pomoca SQL - proc SQL ... quit; proc SQL; create table g1_g2_SQL as select * from g1 union select * from g2; quit; run; data g1_2; *zbior nr 1 + nowa kolumna ; input id imie $ wiek ocena; datalines; 1 Anna 20 4.5 3 Ala 24 5.0 5 Piotr 23 3.0 ; run; data g1_2_2; *zloczenie zbiorow - wynikowy zbior to rekordy z g1 oraz "doklejone" g2; set g1_2 g2; run; data g2_1_2; *zloczenie zbiorow - wynikowy zbior to rekordy z g1 oraz "doklejone" g2; set g2 g1_2 ; *kolejnos nie ma znaczenia dla struktury zbioru wynikowego; run; data g1_1_merge; *zloczenie zbiorow - wynikowy zbior powstaje zgodnie z zasad One-to-One Merging; merge g1_2 g2; run; * One-to-One Merging - laczenie danych pierwsza obserwacja ze zbioru pierwszego z pierwsza obserwacja ze zbioru drugiego itp. jesli takie same atrybuty, po poznieszy nadpisuje wczesniejszy; /* inne przyklady merge */ data p1; input mies wsk wsk1; datalines; 1 2.2 4.4 2 3.3 5.5 3 4.5 6.6 4 3.3 5.3 5 5.5 5.5 6 2.2 1.1 ; run; data p2; input mies wsk wsk2; datalines; 1 2.2 4.9 2 3.3 5.9 3 4.5 6.9 4 3.3 5.9 6 2.2 1.9 ; run; Data sklej3; merge p1 p2 ; run; * prosze wyjascic sklejanie zbiorow za pomoca merge; /* w tym przypadku zbiory posiadaj ten sam indeks dla obserwcji 6 */ Data sklej4; merge p1 p2 (rename=(wsk=wsk_new)); run; data st3; input ID_st imie $ ID_kurs $; datalines; 1 Pawel k1 2 Ania k1 3 Agata k2 4 Zosia k2 5 Piotr k1 ; run; data kurs; input ID_kurs $ opis $; datalines; k1 JO k2 W-F ; run; * merge z opcja BY zmienna (klucz) ; * zmienna - indeks, ktory wykorzystany jest do zloczenia - klucz zloczenia; * UWAGA - dane musza byc posortowane wg zmiennej; ********* przyklad bez sortowania!!!!!!!!!!!!!!; data merge_by; merge st3 kurs; by ID_kurs; run; ********* przyklad bez sortowania!!!!!!!!!!!!!!; PROC SORT data=kurs; BY ID_kurs; PROC SORT data=st3; BY ID_kurs; data merge_by_sort; merge st3 kurs; by ID_kurs; run; * prosze porownac wynik z oraz bez sortowania; /* w ramch zdan projektowych nalezy wykonac: 1. zloczenia dla wlasnych danych, 2. uzyc minimum trzecch zbiorow, 3. pokazac inne zloczenia za pomoca proc SQL;*/