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 김진휘
'SAS' 카테고리의 다른 글
[SAS] SAS에서 EXCEL 파일, 데이터 가져오기 오류 해결 방법 (0) | 2013.11.25 |
---|---|
[SAS] SAS 국제 공인 자격증 취득에 대해서 (0) | 2013.11.19 |
[SAS] SAS를 이용해 두개의 데이터셋의 변수들이 일치하는 기준으로 merge해서 붙이기 (0) | 2013.11.15 |
[SAS] SAS를 이용해 joinkey별로 code에 중복자료가 있을시 모두 출력하기 (0) | 2013.11.15 |
[SAS] SAS를 이용해 joinkey별 동일한 code의 갯수를 비교후 많은 것들만 출력 (0) | 2013.11.15 |
댓글