SAS - Połącz zestawy danych
Wiele zestawów danych SAS może zostać połączonych na podstawie określonej wspólnej zmiennej, aby uzyskać pojedynczy zestaw danych. Odbywa się to za pomocąMERGE oświadczenie i BYkomunikat. Całkowita liczba obserwacji w połączonym zbiorze danych jest często mniejsza niż suma liczby obserwacji w oryginalnych zbiorach danych. Dzieje się tak, ponieważ zmienne z obu zestawów danych są łączone jako jeden rekord na podstawie zgodności wartości wspólnej zmiennej.
Istnieją dwa warunki wstępne dotyczące łączenia zestawów danych podane poniżej -
- zestawy danych wejściowych muszą mieć co najmniej jedną wspólną zmienną, z którą mają się łączyć.
- zestawy danych wejściowych muszą być sortowane według wspólnych zmiennych, które zostaną użyte do scalenia.
Składnia
Podstawowa składnia instrukcji MERGE i BY w SAS to -
MERGE Data-Set 1 Data-Set 2
BY Common VariablePoniżej znajduje się opis użytych parametrów -
- Data-set1,Data-set2 to nazwy zbiorów danych zapisywane jedna po drugiej. 
- Common Variable jest zmienną, na podstawie której pasujące wartości zostaną scalone zestawy danych. 
Łączenie danych
Zrozummy łączenie danych na przykładzie.
Przykład
Rozważ dwa zestawy danych SAS, jeden zawierający identyfikator pracownika z nazwiskiem i wynagrodzeniem, a drugi zawierający identyfikator pracownika z identyfikatorem pracownika i działem. W tym przypadku, aby uzyskać pełne informacje o każdym pracowniku, możemy połączyć te dwa zestawy danych. Ostateczny zestaw danych nadal będzie zawierał jedną obserwację na pracownika, ale będzie zawierał zarówno zmienne dotyczące wynagrodzenia, jak i działu.
# Data set 1	
ID NAME SALARY	
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 
# Data set 2
ID DEPT
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 
# Merged data set
ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FINPowyższy wynik uzyskuje się za pomocą następującego kodu, w którym zmienna wspólna (ID) jest używana w instrukcji BY. Należy pamiętać, że obserwacje w obu zbiorach danych są już posortowane w kolumnie ID.
DATA SALARY; 
   INPUT empid name $ salary  ; 
DATALINES; 
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 
;
RUN; 
DATA DEPT; 
   INPUT empid dEPT $ ; 
DATALINES; 
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 
;
RUN; 
DATA All_details;
MERGE SALARY DEPT;
BY (empid);
RUN;
PROC PRINT DATA = All_details; 
RUN;Brakujące wartości w pasującej kolumnie
Mogą wystąpić przypadki, w których niektóre wartości zmiennej wspólnej nie będą pasować między zestawami danych. W takich przypadkach zbiory danych są nadal łączone, ale w wyniku pojawiają się brakujące wartości.
Przykład
Rozważmy przypadek braku identyfikatora pracownika 3 w zestawie danych dotyczących wynagrodzenia oraz brak identyfikatora pracownika 6 w zestawie danych DEPT. Po zastosowaniu powyższego kodu otrzymujemy poniższy wynik.ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 .		.		IT
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   .
7 Pranab 632.8  OPS
8 Rasmi 722.5   FINŁączenie tylko meczów
Aby uniknąć brakujących wartości w wyniku, możemy rozważyć pozostawienie tylko obserwacji z dopasowanymi wartościami dla zmiennej wspólnej. Osiąga się to za pomocąINkomunikat. Instrukcja scalania programu SAS wymaga zmiany.
Przykład
W poniższym przykładzie IN= wartość zachowuje tylko obserwacje, dla których wartości z obu zbiorów danych SALARY i DEPT mecz.
DATA All_details;
MERGE SALARY(IN = a) DEPT(IN = b);
BY (empid);
IF a = 1 and b = 1;
RUN;
PROC PRINT DATA = All_details; 
RUN;Po wykonaniu powyższego programu SAS z powyższą zmienioną częścią otrzymujemy następujący wynik.
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN