Sas: jak połączyć zbiory danych w oparciu o dwie zmienne


Możesz użyć poniższej podstawowej składni, aby połączyć dwa zbiory danych w SAS-ie na podstawie dopasowania dwóch zmiennych:

 data final_data;
  merge data1(in=a) data2(in=b);
  by ID Store;
  if a and b;
run ;

W tym konkretnym przykładzie zestawy danych zwane data1 i data2 są łączone w oparciu o zmienne zwane ID i Store i zwracane są tylko te wiersze, w których w obu zestawach danych istnieje wartość.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Scal zestawy danych w SAS-ie na podstawie dwóch zmiennych

Załóżmy, że mamy następujący zbiór danych w SAS-ie, który zawiera informacje o sprzedawcach firmy:

 /*create first dataset*/
data data1;
    inputStoreID $;
    datalines ;
1A
1B
1 C
2A
2C
3A
3 B
;
run ;

/*view first dataset*/
title "data1";
proc print data = data1; 

Załóżmy, że mamy inny zbiór danych zawierający informacje o sprzedaży dokonanej w różnych sklepach przez każdego współpracownika:

 /*create second dataset*/
data data2;
    input Store ID $Sales;
    datalines ;
1 to 22
1 B 25
2 to 40
2 B 24
2 C 29
3 to 12
3 B 15
;
run ;

/*view second dataset*/
title "data2";
proc print data = data2;

Możemy użyć poniższej instrukcji merge , aby połączyć dwa zbiory danych na podstawie pasujących wartości w kolumnach ID i Store , a następnie zwrócić tylko te wiersze, w których wartość istnieje w obu kolumnach:

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

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

Wynikowy zbiór danych zwraca wiersze, w których wartości kolumn ID i Store są zgodne.

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:

SAS: Jak wykonać połączenie jeden do wielu
SAS: Jak używać (in=a) w instrukcji scalania
SAS: Jak połączyć, jeśli A nie jest B

Dodaj komentarz

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