본문 바로가기
SAS

[SAS] sas에서 그룹별로 특정값이 있는 경우 체크하는 방법

by SASBIGDATA김진휘 2014. 5. 9.

sas에서 그룹별로 특정값이 있는 경우를 체크하는 방법을 알아보자.

아래의 예제를 통해 알아보면

key변수를 중복값이 있는 그룹이라고 보면

key값 별로 code에 a라는 값이 있는 경우를 찾는 것이다.

 

[코딩 과정 설명]

 

/* 샘플데이터 생성 작업*/

data test;
input key$ code$;
cards;
111 a
333 s
222 s
111 a
111 s
222 s
333 s
444 a
222 s
;
run;

 

/*code에 a값만 추출한 뒤. check라는 변수를 생성해 Y라는 값을 주고 code값은 드랍시킨다.*/

data test2(drop=code);
set test;
if code='a';
check='Y';
run;

 

/*위에서 추출한 데이터의 key값들의 중복값을 제거 한다.*/

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

 

/*기존 데이터와 추출한 데이터를 key 기준으로 가로병합 merge를 한다.*/

data test3;
merge test test2;
by key;
run; 

 

/*결과창*/

 

test는 기존의 데이터이고 test2는 code가 a인 값들을 추출한뒤 code변수를 제거하고, key값 중복제거를 한결과이다.

그리고 test와 test2를 key기준으로 merge하면 test3결과처럼 code에 a값이 속한 key그룹에 모두 check변수 Y값이 붙는다. 즉, check에 Y가 있는 그룹에는 code값이 a가 포함이 된 것이라고 볼 수 있다.

 

 

sasbigdata.com 김진휘

 

댓글