[SAS] sas에서 그룹 별로 중복 값이 있는 데이터만 새로운 변수로 체크하는 방법
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 까지