Sas: як використовувати (in=a) у операторі злиття


Під час об’єднання двох наборів даних у SAS ви можете використовувати оператор IN , щоб повернути лише ті рядки, у яких існує значення в певному наборі даних.

Ось кілька поширених способів використання оператора IN на практиці:

Спосіб 1: повертає рядки, у яких існує значення в першому наборі даних (in=a)

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

Цей конкретний приклад об’єднує набори даних під назвою data1 і data2 і повертає лише ті рядки, де в data1 є значення.

Спосіб 2: повертає рядки, у яких існує значення у другому наборі даних (in=b)

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

Цей конкретний приклад об’єднує набори даних під назвою data1 і data2 і повертає лише ті рядки, для яких існує значення в data2 .

Спосіб 3. Повертайте рядки, у яких існує значення в обох наборах даних (in=a) і (in=b)

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

Цей конкретний приклад об’єднує набори даних під назвою data1 і data2 і повертає лише ті рядки, де значення існує як у data1 , так і в data2 .

У наведених нижче прикладах показано, як використовувати кожен метод на практиці з наступними двома наборами даних:

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

Приклад 1: повернути всі рядки

Ми можемо використати наступний оператор злиття без оператора IN , щоб об’єднати два набори даних на основі значення стовпця ID і повернути всі рядки з обох наборів даних:

 /*perform merge*/
data final_data;
  merge data1 data2;
  byID ;
run ;

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

Зауважте, що всі рядки в обох наборах даних повертаються, навіть якщо значення відсутні через те, що значення ID не існує в обох наборах даних.

Приклад 2: повертати рядки, де значення існує в першому наборі даних (in = a)

Ми можемо використати наступний оператор злиття з (in=a) , щоб об’єднати два набори даних на основі значення в стовпці ID і повернути лише ті рядки, де значення існує в першому наборі даних:

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

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

Зауважте, що повертаються лише ті рядки, для яких існує значення в першому наборі даних.

Приклад 3. Повернути рядки, у яких існує значення у другому наборі даних (in=b)

Ми можемо використати наступний оператор злиття з (in=b) , щоб об’єднати два набори даних на основі значення в стовпці ID і повернути лише ті рядки, де існує значення у другому наборі даних:

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

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

Зауважте, що повертаються лише ті рядки, для яких існує значення у другому наборі даних.

Приклад 4. Повернути рядки, де значення існує в обох наборах даних (in = a) і (in = b)

Ми можемо використати наступний оператор злиття з (in=a) і (in=b) , щоб об’єднати два набори даних на основі значення в стовпці ID і повернути лише ті рядки, де значення існує в обох наборах даних:

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

Зверніть увагу, що повертаються лише ті рядки, для яких існує значення в обох наборах даних.

Примітка . Ви можете знайти повну документацію для оператора злиття SAS тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в SAS:

Як зробити об’єднання зліва в SAS
Як виконати внутрішнє об’єднання в SAS
Як виконати зовнішнє приєднання в SAS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *