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인 것에 대해서만 가로병합이 된 것을 알 수가 있다.
'SAS' 카테고리의 다른 글
[SAS] sas에서 SELECT 문장에 대해서 간단하게 알아보자. (0) | 2014.06.02 |
---|---|
[SAS] sas에서 left join시 join값(유니크값)이 두개이상 일치하는 경우 병합하는 방법 (0) | 2014.05.30 |
[SAS] sas에서 그룹(key)별로 특정값들의 조합이 있는 경우의 그룹만 추출하는 방법 (0) | 2014.05.26 |
[SAS] sas에서 코딩방법에 따른 처리 속도의 차이(if문의 위치) (0) | 2014.05.16 |
[SAS] sas에서 그룹별로 여러변수에 특정값이 포함하는 key값만 출력[sql문사용] (0) | 2014.05.15 |
댓글