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