로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 프로그래밍] PROC RANK를 이용해 그룹별 top n을 검색하는 방법 2018.01.08
김효범 60 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?B_NO=7587&gotopage=1&cmd=content

 

 

 안녕하세요. 오늘은 RANK프로시져를 이용해 그룹별로 top n 을 검색하는 방법에 대해 알아보겠습니다.

 

 

 

PROC RANK OPTIONS

우선 PROC RANK문에 대해 간단하게 알아보겠습니다. 일반적으로 하나 또는 그 이상의 연속형 변수에 대해 순위를 얻기 위해 사용됩니다. 그리고 기본적으로 다음과 같은 형식을 가지게 됩니다.

PROC RANK문에 자주 사용되는 옵션에는 out=, Ties=, Descending등이 있습니다. Out=옵션은 새롭게 생성될 데이터셋을 만드는 역할을 하고 Descending옵션은 순위를 매기는 기준이 큰 값일 수록 높은 순위를 가지게 합니다. 같은 순위를 가지는 경우 Ties= 옵션으로 어떻게 순위가 매겨질지 결정됩니다. Ties=Mean이 올 경우 순위들의 평균을 공통된 순위로 결정합니다. Ties=High은 순위들 중 큰 값을, Ties=Low은 순위들 중 작은 값을 순위로 결정합니다.

 

예를 들어 다음과 같은 데이터셋이 있을 때

 

Ties=high 옵션을 사용하게 되면 2위와 3위 중 3위로 값을 결정하게 되고

 

Ties=low 옵션을 사용하게 되면 2위와 3위 중 3위로 값을 결정하게 됩니다.

 

그리고 ties=mean 옵션은 디폴트 값과 마찬가지로 2위와 3위의 평균값으로 순위를 결정합니다.

 

 

 

 

VAR, RANKS

RANK 프로시져에 쓰이는 명령문에서 VAR명령문은 순위의 기준이 되는 변수들을 지정하는 역할을 하고 RANKS명령문은 순위를 저장할 새로운 변수를 생성할 때 쓰입니다. 만약 RANKS명령문이 없다면 VAR명령문에 지정된 변수들은 순위로 기존의 값들이 대체됩니다. 따라서 기존의 자료값을 보존하고 싶다면 RANKS명령문을 함께 사용하는 것이 좋습니다.

 

 

 GROUP, top n

 만약 데이터 내에 그룹이 존재하여 그룹별로 순위를 매기고 싶을 때는 BY명령문을 사용하면 됩니다. , PROC SORT문으로 미리 그룹변수를 정렬해 놓아야 합니다.

 

예를 들어 다음과 같은 데이터가 있을 때 test 그룹별로 순위를 매기고 싶다면

 

우선 PROC SORT문으로 변수 test에 대해 정렬을 한 후 PROC RANK문에서 BY test 명령문을 통해 그룹별로 순위를 매길 수 있습니다.

 

 

 

 

 그룹별로 top n 의 개체만을 검색하는 법은 다음과 같이 순위변수에 대한 조건문을 만드는 것입니다.

데이터 단계에서 if 조건문을 사용할 수도 있고

 

PROC SQL문에서 where 조건절을 사용하여 그룹별로 1또는 2위의 개체값을 검색할 수 있습니다.

 

 

 

마치며

오늘은 PROC RANK문을 사용하여 그룹별로 top n개의 개체를 검색하는 법에 대해 알아보았습니다. 이외에도 PROC RANK문에 있는 옵션이나 함께 쓰이는 명령어 등의 활용에 대해서도 간단히 알아보았습니다.

 

 

 

 

Reference

김기영 외 3. 『예제로 배우는 SAS프로그래밍 입문』. 자유아카데미. 2016.

 

 

 
 
 
 
 [SAS 프로그래밍] 데이터셋 옵션(Dataset Options) 활용하기
 [SAS 프로그래밍] CASE WHEN으로 조건을 만족하는 중복 값을 제거하는 방법