BookmarkSubscribeRSS Feed

[BASE SAS기초] Combining SAS Data Sets(3)

Started ‎06-15-2020 by
Modified ‎06-15-2020 by
Views 289

[BASE SAS기초] Combining SAS Data Sets(3)

 

안녕하세요^^

오늘은 지난시간에 이어 Combining SAS Data Set 세번째 시간으로, 데이터 match-merging의 짝짓기 병합(Match merge)에 대해 공부하겠습니다. ​지난 시간, 데이터 One-to-One(일대일 매칭)에 대한 내용과 비교해보면서 공부하시면 좋을 것 같습니다.​

Match merge(짝짓기 병합)

짝짓기 병합은 한 개체에 관한 자료가 둘 이상의 SAS자료에 일정한 순서없이 뒤죽박죽 존재하는 경우의 병합에 사용됩니다. 짝짓기 병합을 하려면 각 SAS자료에는 기준이 되는 공통 변수가 하나 이상 존재해야 합니다. 짝짓기의 기준 변수는 BY문장에 지정하는데 BY문장을 사용하기 위해서는 공통변수를 기준으로 SAS 자료의 순서화가 선행되어야 합니다.

순서화는 앞선 Combining SAS Data Sets(2)에서 소개해 드렸지만, 다시 한번 소개하도록 하겠습니다.

 

PROC SORT DATA = input-SAS-data-set;

<OUT = output-SAS-data-set>;

BY <DESCENDING> by-variable(s);

RUN;

 

SORT 프로시저는 SAS 데이터셋의 순서를 재정렬하는 것을 말하며, 여러 개의 변수에 대해 순서화도 가능합니다.

BY문장의 ASCENDING(오름차순)이 default값이며, DESCENDING 옵션을 넣으면 순서를 내림차순으로 정렬합니다.

(1) One-to-Many or Many-to-One

 

SE22015121623274270.png

하나의 관측값이 다른 데이터의 하나 이상의 관측값과 연관되어있는 데이터의 병합을 말합니다.

예를들어,

SE22015121623281070.pngSE22015121623281570.png

FIRST, GENDER, EMPID를 변수로 갖는 EMPSAU와 EMPID, TYPE, PHONE을 변수로 갖는 PHONEHW를 만듭니다.

 

SE22015121623282070.png

EMPSAU(좌측)데이터와 PHONEHW(우측)데이터를 match-merging하면 EMPSAUHW데이터를 만들 수 있습니다.

 

 

SE22015121623295770.pngSE22015121623300270.png

이는 EMPID를 기준(BY문장)으로 하여 생성된 데이터입니다.

​단, 이때 기준이 되는 변수인 EMPID에 대해 데이터가 SORT(정렬)되어있어야 합니다.

(2) Nonmatches

 

SE22015121623305270.png

적어도 하나의 관측값이 다른 데이터의 어떤 데이터와 관련이 없을 때의 데이터 병합을 말합니다.

예를들면,

 

SE22015121623314870.pngSE22015121623315470.png

먼저, FIRST, GENDER, EMPID를 변수로 갖는 EMPSAU와 EMPID, PHONE을 변수로 갖는 PHONEC를 만듭니다.

 

SE22015121623320170.png

EMPSAU(좌측)데이터와 PHONEC(우측)데이터를 match-merging하면 EMPSAUC데이터를 만들 수 있습니다.

 

SE22015121623330870.pngSE22015121623331270.png

 

​이는 EMPID를 기준(BY문장)으로 하여 생성된 데이터입니다.

​단, 이때 기준이 되는 변수인 EMPID에 대해 데이터가 SORT(정렬)되어있어야 합니다​.

​이 데이터는 Nonmatches이기 때문에, 기준변수인 EMPID가 같은 records만 두 데이터셋이 병합되며, matching되지 않은 나머지 변수들에 대해서는 결측값처리 합니다.

※ Many-to-Many Merge​

SE22015121623345270.pngSE22015121623345870.png

​FIRST, GENDER, COUNTRY를 변수로 갖는 EMPSAUUS와 COUNTRY, PHONE을 변수로 갖는 PHONEO를 만듭니다.

SE22015121623351070.png

EMPSAUUS(좌측)데이터와 PHONEO(우측)데이터를 match-merging하면 EMPSOFC데이터를 만들 수 있습니다.

 

SE22015121623361470.pngSE22015121623361970.png

 

이는 COUNTRY를 기준(BY문장)으로 하여 생성된 데이터입니다.

​단, 이때 기준이 되는 변수인 EMPID에 대해 데이터가 SORT(정렬)되어있어야 합니다.

이 데이터는 Many-to-Many이기 때문에, 기준변수인 Country가 같은 records에 대해서는 앞선 방법들과 같은 matching을 하며, 개수가 맞지 않는 records에 대해서는 첫번째 데이터의 마지막 record를 반복합니다.

이렇게 merge문장으로 다양한 데이터셋을 병합하는 방법들에 대해 공부해 보았습니다.

이상 MERGE문장에 대한 공부를 마치겠습니다.

​다음시간에는 Producing Summary Reports로 다양한 report를 만드는 방법에 대해 공부해보도록 하겠습니다.

읽어주셔서 감사합니다^^ ​

Version history
Last update:
‎06-15-2020 09:56 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags