본문 바로가기
SAS

[SAS] sas에서 full join(합집합)에서 inner join(교집합)부분 빼는 방법(합집합-교집합)

by SASBIGDATA김진휘 2014. 4. 25.

sas를 이용해 merge를 하는데 조건이 두개의 데이터셋 합집합 개념에서 교집합 부분을 빼는 방법을 알아보자.

아래의 그림을 보면 이해가 쉬울 것이다.

한마디로 hwi1 데이터셋과 hwi2 데이터셋의 초록색 부분을 추출해 내는 것이다. 

1. DATA STEP

 

먼저 기본적인 데이터스텝에서 해보자.

두개의 데이터셋에서 기준이 되는 변수를 각각 proc sort를 이용해 정렬을 한다.

그뒤 아래의 그림에 코딩과정 처럼 진행하면 추출이 가능한데

if문에 있는 =^은 같지 않다라는 뜻이다.

=^ 자리에 ne를 써도 같은 의미이다.

ne는 not equal의 줄임말이다.

 

 

2. proc sql

 

위와 같은 결과값을 추출하지만 sort과정이 필요없기때문에 처리 속도가 빠른 sql문을 이용해 추출해보자.

아래 그림을 참조

ace와 jin은 임의로 지정한 것이기 때문에 사용자가 어떠한 것을 써도 결과는 같다.

 

 

위의 두 결과창을 보면 join과 join1 데이터셋 결과는 같다.

다만 하나는 datastep을 이용해 추출하였고

다른 하나는 sql문을 이용해 추출한 것이다.

 

hwi1과 hwi2의 합집합은 총 5개의 관측치를 가지는데

여기서 교집합인 key 111과 key 444 데이터를 빼면

위와 같이 key값 222, 333, 555만 추출이 된 것을 알 수가 있다.

 

www.sasbigdata.com 김진휘

 

댓글