지식노동자의 노트

SAS 중복관측치 다루기 (select distinct) 본문

SAS

SAS 중복관측치 다루기 (select distinct)

생각하는너구리 2012. 5. 30. 22:46
728x90


지난번에 이어 SAS data의 중복 관측치에 관한 얘기를 하겠습니다. proc sort의 nodupkey option도 좋은 방법이지만 SQL의 DISTINCT 문도 좋은 대안입니다. 늘 그렇듯이 예제 DATA를 생성하는 것으로 시작해 보겠습니다. 

data dup_yes;
        input 학번 $ 이름 $ 주거지 $ 최종거주일자 $;
        datalines;
971214  김말순  서울    20120508
971215  김초롱  부산    20110805
971215  김초롱  서울    20120106
971215  김사랑  대전    20120508
971215  김사랑  대전    20120508
971215  김사랑  대전    20120508
;
run;


위 코드로 부터 다양한 중복사례가 포함된 셋을 생성했습니다.

<그림1. 중복 데이타셋>


이제 SQL을 사용해서 '학번'칼럼에서 중복없이 유일한 값만 추출 하겠습니다. DISTINCT 라는 단어의 뜻에서 알 수 있듯이 unique한 값만 선택하겠다는 의미 입니다.


1. 학번 칼럼에서 중복없이 추출합니다.

proc sql;
create table dup_no1 as
select distinct 학번
from dup_yes;
quit;


2. 학번, 이름 칼럼의 조합에서 중복없이 추출합니다.

proc sql;
create table dup_no2 as
select distinct  학번
               ,이름
from dup_yes;

quit;


3. 학번, 이름, 주거지 칼럼의 조합에서 중복없이 추출합니다.

proc sql;
create table dup_no3 as
select distinct  학번
               ,이름
               ,주거지
from dup_yes;

quit;



4. 학번, 이름, 주거지, 최종거주일자 칼럼의 조합에서 중복없이 추출합니다.
proc sql;
create table dup_no4 as
select distinct  학번
               ,이름
               ,주거지
               ,최종거주일자
from dup_yes;

quit;



5. 모든 칼럼의 조합에서 중복없이 추출합니다. 4번과 결과가 같습니다.
proc sql;
create table dup_no5 as
select distinct *
from dup_yes;

quit;




반응형
Comments