본문 바로가기
SAS

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

by SASBIGDATA김진휘 2014. 5. 29.

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 김진휘

 

댓글