Як виконати зовнішнє об’єднання в sas (з прикладом)


Щоб виконати зовнішнє об’єднання з двома наборами даних у SAS, можна використати такий базовий синтаксис:

 proc sql ;
    create table final_table as
    select coalesce(x.team, y.team) as team, x.team, x.points, y.team, y.assists
    from data1 as x full join data2 as y
    on x.team = y.team;
quit ;

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

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: виконання зовнішнього об’єднання в SAS

Припустімо, що у SAS є два набори даних, які містять інформацію про різні баскетбольні команди:

 /*create datasets*/
data data1;
    input team $points;
    datalines ;
At 18
B22
C19
D 14
E14
F 11
G20
H 28 
;
run ;

data data2;
    input team $assists;
    datalines ;
At 4
B9
C14
D 13
L 10
M 8
;
run ;

/*view datasets*/
proc print data =data1;
proc print data =data2; 

Ми можемо використати такий синтаксис, щоб виконати зовнішнє об’єднання та створити новий набір даних, що містить кожен рядок з обох наборів даних:

 /*perform outer join*/
proc sql ;
    create table final_table as
    select coalesce(x.team, y.team) as team, x.team, x.points, y.team, y.assists
    from data1 as x full join data2 as y
    on x.team = y.team;
quit ;

/*view results of outer join*/
proc print data =final_table;

Отриманий набір даних містить кожен рядок із кожного окремого набору даних.

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

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

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

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

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

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

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