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