Sas: jak połączyć, jeśli a nie jest b
Możesz użyć poniższej podstawowej składni, aby połączyć dwa zbiory danych w SAS-ie i zwrócić tylko te wiersze, dla których wartość istnieje w pierwszym zbiorze danych, a nie w drugim:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
Ten konkretny przykład łączy zestawy danych zwane data1 i data2 i zwraca tylko wiersze, w których wartość istnieje w data1 , a nie w data2 .
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Połącz dwa zbiory danych w SAS-ie, używając polecenia If A Not B
Załóżmy, że mamy w SAS-ie następujące dwa zbiory danych, które zawierają informacje o sprzedawcach firmy:
/*create first dataset*/
data data1;
inputIDGender $;
datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;
title "data1";
proc print data = data1;
/*create second dataset*/
data data2;
input IDSales;
datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;
title "data2";
proc print data = data2;
Jeśli użyjemy poniższej instrukcji merge do połączenia dwóch zbiorów danych w oparciu o wartość kolumny ID , zwrócone zostaną wszystkie wiersze z obu zbiorów danych:
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Możemy jednak używać instrukcji IN do zwracania tylko wierszy, w których wartość istnieje w pierwszym zestawie danych, a nie w drugim zestawie danych:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Należy pamiętać, że zwracane są tylko wiersze, dla których wartość istnieje w pierwszym zestawie danych, a nie w drugim.
Uwaga : Pełną dokumentację instrukcji łączenia SAS-a można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w SAS-ie:
Jak wykonać lewe połączenie w SAS
Jak wykonać połączenie wewnętrzne w SAS
Jak wykonać połączenie zewnętrzne w SAS-ie