sas에서 그룹별로 여러 변수에 특정값이 공통으로 존재하는 경우 그룹 수를 추출하는 방법을 알아보자.

 

 

예를 들어 보면 아래의 그림처럼 code1과 code2에 a라는 특정값이 그룹별로 모두 존재하는 경우에 해당하는

그룹이 몇개인지 알아보는 방법이다.

 

 

위의 그림은 예를 들어 설명한 것이고,

실제 사용한 예제데이터는 다른 데이터이지만 형식은 같다.

 

[코딩과정]

 

/*예제데이터 생성*/

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

 

/*code1이 a인것만 추출하여 result 데이터셋 생성*/
proc sql;
create table result as
select *
from h
where code1='a';
quit;

 

/*code2가 a인것만 추출하여 result1 데이터셋 생성*/

proc sql;
create table result1 as
select *
from h
where code2='a';
quit;

 

/*result와 result1의 key값이 같은 경우만 출력해 join 데이터셋 생성*/

proc sql;
create table join as
select a.key
from result a inner join result1 b
on a.key=b.key;
quit;

 

/*join 데이터셋 key값 중복제거*/

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

 

 

[과정부터 결과까지의 사진]

 

내용은 간단하다.

1. 원데이터에서 code1이 a인 것만 출력 저장

2. 원데이터에서 code2가 a인 것만 출력 저장

3. 위의 두개의 데이터셋에 key값이 공통인것만 출력 저장

4. 중복된 key값 제거

5. 결과 : 그룹(key)별로 code1과 code2에 a가 공통으로 존재하는 key를 출력해줌.

 

www.sasbigdata.com 김진휘