sas에서 그룹별로 여러 변수에 특정값이 있는 경우의 그룹만 추출하는 방법을 알아보도록 하자.

 

 

역시나 언어로 이해하기는 어려우니 그림을 통해서 무엇을 할 것인가에 대해 알아보자.

 

 

 

 위의 그림을 통한 설명처럼 간단하게 key(그룹)별로 여러변수에 특정값이 존재하는 경우만 출력한다는 것이다.

 

[코딩과정]

 

/*예제 데이터 생성*/

data h;
input key$ code1$ code2$;
cards;
111 a b
111 b b
111 b a
222 a b
222 a b
333 b b
333 b a
333 b b
444 a b
444 b a
;
run;

 

/*원데이터에서 code1에 a값이 있는 키값만 출력*/

data h1(drop=code1 code2);
set h;
if code1='a';
run;

 

/*키값 중복제거*/

proc sort data=h1 nodupkey; by key; run;

 

/*원데이터와 code1에 a가 있는 경우의 출력결과를 merge*/

/*1차결과 : 1차적으로 code1에 a가 있는 경우만 출력됨*/

data h2;
merge h(in=a) h1(in=b);
by key;
if b;
run;

 

/*1차결과에서 code2에 a가 있는 경우 key값만 출력*/

data h3(drop=code1 code2);
set h2;
if code2='a';
run;

 

/*키값 중복제거*/

proc sort data=h3 nodupkey; by key; run;

 

/*1차결과와 code2에 a가 있는 경우를 merge*/

/*최종결과 : key별로 code1과 code2변수에 a가 있는 경우만 그룹을 모두 출력*/

data h4;
merge h2(in=a) h3(in=b);
by key;
if b;
run;

 

 

/*코딩 결과 그림 설명*/

 

 

www.sasbigdata.com 김진휘