본문 바로가기
SAS

[SAS] sas에서 inner join 하기 (교집합 개념)

by SASBIGDATA김진휘 2014. 4. 16.

SAS에서 두개의 데이터셋을 합치는데 공통된 부분을 가로결합하는 방법을 알아보자.

쉽게 말하면 아래의 그림과 같이 초록색 부분인 교집합 부분을 출력하는 것이다. 

 

위의 사진은 예제 데이터인 hwi1데이터셋과 hwi2데이터셋의 교집합 부분(초록색)을 출력하겠다는 그림이다. 

 

1. data step

빅데이터에서는 proc sort과정의 처리속도 문제로 sql을 많이 사용하지만 일반적으로 많이 사용하는

데이터스텝에서 inner join(교집합)을 하는 과정을 알아보자.

key값이 같은 데이터를 출력한다.

 

 

 

join할 2개의 데이터셋의 기준이 되는 변수 key변수를 먼저 proc sort로 정렬을 한뒤

merge(가로병합)를 한다. 조건은 key기준으로 in의 a와 b가 같은 경우 교집한인 경우를 설정하면

위와 같이 key값이 같은 데이터들만 합쳐져서 출력이 된다.

 

2. proc sql(where 사용)

proc sql구문을 사용할 시에 따로 proc sort(정렬) 과정이 필요 없기 때문에 처리속도가 빠르다는 장점이 있다.

proc sql의 where을 이용하여 교집합을 찾아내는 방법이다.

key값이 같은 경우 출력한다.

 

 

 

3. proc sql(inner join, on 사용)

PROC SQL의 INNER JOIN이라는 명령어를 투입해서 교집합을 찾아내는 방법이다.

key값이 같은 경우 출력한다.

 

 

 

 

4. proc sql(natural join 사용)

natural join은 직역하면 자연조인으로 두개의 데이터셋에서 동일한 변수(칼럼)을 찾아 inner join시키는 방법이다.

예제의 데이터에서는 key변수만이 동일한 칼럼이므로 key값이 동일한 경우를 출력한다.

위의 방식처럼 따로 key값이 같은 경우를 출력하라는 조건을 지정할 필요가 없다.

하지만 예제데이터와 달리 여러 동일한 칼럼이 있을 경우에는 원하는 출력값이 나오지 않을수도 있으므로

사용시 주의 해야 한다.

 

 

 

www.sasbigdata.com 김 진 휘

 

 

 

댓글