1. MERGE

이번 챕터에서는 데이터를 결합하는 방법에 대해 알아보도록 하겠습니다. 우선 데이터의 수평적 1대 1결합부터 알아보도록 하겠습니다. 아래 실행 결과를 미리 보시고 어떻게 결합할지 생각해보세요.

subject_test1_1

subject_test1_1

mysas.subject_test1_1

data mysas.subject_test1_1;
input id name $9. class_ $ subject $ score ;
datalines;
101 이호준 1반 computer 92 
102 이호중 1반 computer 80
201 이길동 2반 computer 90
202 이준호 2반 computer 86
;
run;
proc print data=mysas.subject_test1_1;
run;

subject_test2

subject_test2

mysas.subject_test2

data mysas.subject_test2;
input id phonenumber $16.;
datalines;
101 010-1234-5678
102 010-9876-5432
201 010-4567-1565
202 010-7536-9512
;
run;
proc print data=mysas.subject_test2;
run;

공통된 기준변수를 가지고 있어야 합니다.

data mysas.join;
merge mysas.subject_test1_1 mysas.subject_test2;
by id;
run;

proc print data=mysas.join;
run;

로그를 보시면 에러가 나타날 것입니다. by 변수가 데이터 셋에 대해서 정렬되지 않았습니다. 병합하기 전에 기준변수를 기준으로 각각의 데이터셋을 정렬을 해줘야합니다. BY 변수를 기준으로 정렬합니다.

proc sort data=라이브러리명.데이터셋;
by 정렬할 변수;
run;
proc sort data=mysas.subject_test1_1;
by id;
run;

proc sort data=mysas.subject_test2;
by id;
run;

각각의 데이터셋을 정렬한 후에 다시 결합을 하면 1:1 수평적 결합이 된 것을 확인할 수 있습니다. 또한, 가로로 결합된다는 것을 확인할 수 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/25b4fa36-a366-4f83-ab4a-a6eb1caf5e5b/Untitled.png

2. 조인의 종류