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

분류: SAS 작성일: 2014.04.16 13:55 Editor: 공부하는 휘라

sas에서 두개의 데이터셋을 full join하는 방법에 대해서 알아보자.(합집합 개념)

합집합에서는 좌 우측 데이터들의 일치 유무를 따지지 않고 모두 붙이는 개념인데 

합치는 과정중 공백이 있다면 null값으로 처리한다. 

 

위의 그림처럼 hwi1이라는 데이터 셋과 hwi2 데이터 셋의 합집합개념(초록색 부분)이라고 보면 된다.

 

1. data step

 

 

위의 사진은 data step을 사용하는 방법이다.

proc sort과정을 하여 단순하게 merge시키면 위와 같이 원하는 합집합 개념의 결과가 도출된다.

 

2. proc sql(full join 사용) 

 

 

proc sql에서 full join명령어를 사용하는 방법이다. 자세히 보면 key변수의 555값이 없는 것을 볼 수 있다.

이것은 full join이 될때 기준이 hwi1이 기준이 되기 때문에 hwi2의 key값인 555는 null값이 되어버린다.

대부분의 경우 우리는 이러한 결과를 원하지 않는다.

data step의 결과와 같이 sql문으로는 어떻게 하면 될까? 아래의 3번째 그림을 참조하자.

 

3. proc sql(coalesce, full join 사용)

위의 결과와 같이 555값이 누락되었을때 사용되는 방법이다.

coalesce라는 함수를 사용하여 인수 a, b중 null값이 아닌 것을 출력하는 한다.

즉, 합치면 5번째 key변수 관측치에 hw1데이터중 들어갈 값이 없으므로 null값이지만

hwi2데이터의 key변수에 5번째 자리에 들어갈 555라는 값이 있기때문에 555값이 null값 대신 투입된다고 보면된다. 

아래사진 참조 

 

coalesce의 사용으로 key변수에 555가 출력되어 완벽한 합집합이 되었음을 알 수가 있다.

 

www.sasbigdata.com 김진휘