본문 바로가기
SAS

[SAS] sas merge 가로병합 끝장내기(full, left, right, inner join방법 소개)

by SASBIGDATA김진휘 2014. 3. 4.

sas에서 데이터 핸들링을 하면서 데이터들을 붙이고 나누고 하는 작업들을 자주 하게 된다.

가장 많이 사용되는 것이 세로병합인 set 구문과 가로병합 merge인데

오늘은 merge 사용법에 대해서 알아보도록 하자. 

 

사진을 보고 이해하면 아주 쉽게 이해 할 수 있을 것이다.

 

 

아래 사진에 m이라는 데이터셋과 m1이라는 데이터셋이 있는데 변수 key를 가지고 merge(가로병합)를 해보자.

(아래사진참조)

 

 

 

 

1. 두 데이터를 조인시킬 변수를 proc sort를 통해 정렬한다. 예제에서는 key변수를 정렬한다.(아래사진참조)

 

 

 

2. full join merge 방법 (아래사진참조)

풀조인 말그대로 조건 없이 통째로 가로로 붙여버리는 거다.

 

 

3. left join merge 방법(아래사진참조)

한마디로 두개의 데이터가 있는데 왼쪽? 데이터를 기준으로 잡고 병합시킨다는 말이다.

in= 임의의 명을 지정해준다.

if 를 통해 기준이 될 임의의 명을 지정한다.

 

 

 

 

4.right join merge 방법(아래사진참조)

left join과 비슷하며 if뒤에 기준이 되는 명이 우측 데이터셋의 in= 임의의 명이 들어간다.

 

 

 

 

5.inner join merge 방법(아래사진참조)

코딩을 보면 알겠지만 좌 우측 데이터들 모두 기준이 되어 만족하는 경우? 를 말한다.

 

 

 

주의) 한번씩 merge를 하는데 병합이 되지 않고 로그창에 character numeric이란 단어와 함께 붉은색으로 오류메시지가 뜨는 경우가 있다. 이경우는 in= 을 넣어 조건을 걸때 간혹 나타나게 되는데 대부분 빠르게 하기 위해 in=a in=b 이런식으로 입력하는 경우이다. 이 경우 기존의 변수와 동일하거나 기타등의 이유로 에러가 발생하게 된다.

 

그러므로 예문처럼 특이한? in=jin in=hwi 라던지 혹은 in=_1 in=_2 등 자주 사용하지 않는(겹치거나 에러 발생확률을 낮추는?) 임의의 이름을 지정하면 에러가 발생활 확률이 거의 없다.

 

sasbigdata.com 김진휘

 

댓글