SAS

[SAS] sas에서 조건에 맞는 값들에 대해서만 left join하는 방법

SASBIGDATA김진휘 2014. 5. 29. 10:20

sas에서 조건을 제시하고 그에 맞는 값들에 대해서만 left join을 하는 방법을 알아보자.

여기서 말하는 조건은 데이터의 일부분이 일치하는 경우를 말한다.

예를 들어 알아보자.

 

[코딩 및 설명]

[data step구문 이용방법]

proc sort data=jin.hwi1;by key; run;
proc sort data=jin.hwi2;by key; run;

 

data jin.join;
merge jin.hwi1(in=a where=(key like '1%')) jin.hwi2(in=b);
by key;
if a;
run;

 

데이터셋 코딩을 보면

먼저 두개의 데이터셋을 join할 값인 key별로 정렬(sort)을 실시한다.

그리고 merge를 이용해 가로병합을 실시하는데

where문이 추가된 것을 볼 수가 있다. key like '1%' 는 key값이 1로 시작되는 값을 의미한다.

left join(왼쪽 데이터셋 기준으로 병합하기 때문에 if a 라는 구문을 사용한다.

여기서 in=a와 in=b 는 기준설정을 위한 임의의 변수라고 생각하면 된다.

 

[sql문 이용방법]

proc sql;
create table jin.join1 as
select a.key, a.code, b.score
from jin.hwi1 a left join jin.hwi2 b
on a.key=b.key
where a.key like '1%';
quit;

sql문 또한 역시 위의 데이터스텝 코딩 설명과 같다.

sort과정을 할 필요가 없을뿐 결과는 같게 나온다.

 

[데이터셋 결과]

 

            

 

 

위 그림처럼 두개의 데이터셋을 위와 같은 코딩 프로그램을 이용해 실시하면

아래와 같은 결과가 출력이 된다.

왼쪽 테이블 기준으로 1로 시작되는 값에 대해서만 left join을 실시하였기 때문에

key값이 111인 것에 대해서만 가로병합이 된 것을 알 수가 있다.

 

 

 

 

www.sasbigdata.com 김진휘