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