Sas: jak używać (in=a) w instrukcji scalania


Łącząc dwa zbiory danych w SAS-ie, możesz użyć instrukcji IN , aby zwrócić tylko te wiersze, w których istnieje wartość w określonym zbiorze danych.

Oto kilka typowych sposobów wykorzystania instrukcji IN w praktyce:

Metoda 1: Zwraca wiersze, w których wartość istnieje w pierwszym zestawie danych (in=a)

 data final_data;
  merge data1 (in=a) data2;
  byID ;
  if a;
run ;

Ten konkretny przykład łączy zestawy danych zwane data1 i data2 i zwraca tylko wiersze, w których wartość istnieje w data1 .

Metoda 2: Zwraca wiersze, w których wartość istnieje w drugim zestawie danych (in=b)

 data final_data;
  merge data1 data2 (in=b);
  byID ;
  if b;
run ;

Ten konkretny przykład łączy zestawy danych zwane data1 i data2 i zwraca tylko te wiersze, dla których istnieje wartość w data2 .

Metoda 3: Zwraca wiersze, w których wartość istnieje w obu zbiorach danych (in=a) i (in=b)

 data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

Ten konkretny przykład łączy zestawy danych zwane data1 i data2 i zwraca tylko wiersze, w których wartość istnieje zarówno w data1, jak i data2 .

Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce z następującymi dwoma zbiorami danych:

 /*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; 

Przykład 1: Zwróć wszystkie wiersze

Możemy użyć poniższej instrukcji merge bez instrukcji IN , aby połączyć dwa zbiory danych na podstawie wartości kolumny ID i zwrócić 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;

Należy pamiętać, że zwracane są wszystkie wiersze w obu zbiorach danych, nawet jeśli brakuje wartości ze względu na brak wartości identyfikatora w obu zbiorach danych.

Przykład 2: Zwróć wiersze, w których wartość istnieje w pierwszym zestawie danych (in = a)

Możemy użyć poniższej instrukcji merge z (in=a) , aby połączyć dwa zbiory danych na podstawie wartości w kolumnie ID i zwrócić tylko te wiersze, w których wartość istnieje w pierwszym zbiorze danych:

 /*perform merge*/
data final_data;
  merge data1 (in = a) data2;
  byID ;
  if a;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Należy pamiętać, że zwracane są tylko te wiersze, dla których istnieje wartość w pierwszym zestawie danych.

Przykład 3: Zwróć wiersze, w których wartość istnieje w drugim zestawie danych (in=b)

Możemy użyć poniższej instrukcji merge z (in=b) , aby połączyć dwa zbiory danych na podstawie wartości w kolumnie ID i zwrócić tylko te wiersze, w których wartość istnieje w drugim zbiorze danych:

 /*perform merge*/
data final_data;
  merge data1 data2(in=b);
  byID ;
  if b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Należy pamiętać, że zwracane są tylko te wiersze, dla których istnieje wartość w drugim zestawie danych.

Przykład 4: Zwróć wiersze, w których wartość istnieje w obu zbiorach danych (in = a) i (in = b)

Możemy użyć poniższej instrukcji merge z (in=a) i (in=b) , aby scalić dwa zestawy danych na podstawie wartości w kolumnie ID i zwrócić tylko te wiersze, w których wartość istnieje w obu zestawach danych:

 /*perform merge*/
data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Należy pamiętać, że zwracane są tylko te wiersze, dla których w obu zestawach danych istnieje wartość.

Uwaga : Pełną dokumentację instrukcji scalania SAS-owej znajdziesz 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 *