본문 바로가기
SAS

[SAS] sas에서 그룹 별로 중복 값이 있는 데이터만 새로운 변수로 체크하는 방법

by SASBIGDATA김진휘 2014. 2. 12.

SAS에서 하나의 변수를 기준으로 그에 딸린 값들 중에 중복이 있는 값에 대해 표시하는 방법을 알아보자.

 

아래 그림은 joinkey별로 각 cost의 값들 중에 중복이 있는 값이 있는 경우에 대해 check1이라는 변수를 생성해서

0으로 표시하고 중복이 없을 경우에 1로 표시하는 경우이다. 응용해서 실무에 적용해 보도록 하자.

 

 

프로그램 코딩 과정

 

data k;
input joinkey cost;
cards;
123 1000
123 2000
123 1000
123 1000
123 500
123 600
123 600
251 1500
251 1500
251 1000
;
run;

 

data k1;
set k;
checking_var=compress(left(joinkey)) || compress(cost);
run;

 

proc sort data=k1; by checking_var; run;

 

data k2;
set k1;
by checking_var;
if first.checking_var=1 then check1=1;
else check1=0;
if check1=0;
run;

 

data k3;
set k2;
drop checking_var;
run;

 

proc sort data=k; by joinkey cost; run;
proc sort data=k2; by joinkey cost; run;

 

data k3;
drop checking_var;
merge k k2;
by joinkey cost;
run;

 

data k4;
set k3;
if check1='.' then check1=1;
run;

 

 

생성된 각 데이터 셋들의 결과창

화살표 순으로 베이스 데이터 셋 work.k 부터 최종 결과 데이터 셋 work.k4 까지 

 

 

 

www.sasbigdata.com 김진휘

 

 

댓글