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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *