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 Variable

Poniż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   FIN

Powyż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