본문 바로가기
SAS

[SAS] SAS를 이용해 데이터 중복제거하기 proc sql 사용

by SASBIGDATA김진휘 2013. 11. 18.

SAS데이터를 핸들링 하면서 가장 많이 하는 작업중 하나가 중복제거 작업입니다.

보통 가장 일반적으로 사용하는 것이 proc sort에서 nodupkey를 옵션으로 걸어서 사용을 많이합니다.

 

그렇다면 중복제거가 proc sort의 nodupkey만 있는 것이냐?

아니다! proc sql의 distinct문이 있다.

 

그런데 왜 두개가 따로 있는것인가? 뭐 따지고 보자면 중간의 정렬과정인 sorting작업이 sql에서는 해줄 필요가 없기때문에 sql문에 아마도 대용량 데이터에서는 더 빠른 처리 결과를 낼 것이다.

 

그럼 proc sql의 distinct를 이용하여 데이터의 중복제거를 하는 방법을 알아보자.

 

아래와 같이 중복이 있는 데이터 셋을 생성하였다.

 

 

 

위의 5개변수와 10개의 관측치를 가진 데이터를 이용하여 중복제거를 해봅시다!

 

 

 

각 코딩위에 주석을 달아놓았고 우측의 결과창 순서대로 총 4가지의 중복제거를 통해 결과를 뽑아봤습니다.

proc sql distinct를 통해 중복제거를 실시하였는데

임의의 작은 데이터로 실행해서 proc sort nodupkey옵션과의 속도차이는 모르겠지만

sorting 중간단계가 sql에는 없으니 sql이 더 빠를거라 예상됩니다.

 

첫번째는 code변수를 중복제거 하였으며, 같은 방식으로 두번째는 gender변수를 중복제거 하였습니다.

distinct뒤에 변수가 콤마를 추가하시고 입력하시면 조합 중복제거가 가능합니다.

 

모든 변수의 조합 중복제거를 하고 싶으실 경우에는 변수명 모두 적지 않고 간단하게 *(별표)를 입력하시면

중복제거가 됩니다.

 

sasbigdata.com 김진휘

 

댓글