반응형
Proc Rank 를 이용한 SAS 순위 정하기
데이터의 순위를 정해서 동일한 데이터셋에 새로운 순위 변수를 만드는 방법을 Proc Rank 를 이용하여 해보겠습니다. 전체 순위를 매기는 것 뿐만아니라 특정 그룹내에서 그룹내 순위매기기 또는 median 기준으로 2개 그룹나누기, Tertile, Quartile, Quintile 등 여러용도로 사용할 수 있는 유용한 SAS Procedure입니다.
< Sample data 생성 >
data test_data;
input subject $ gender $ bmi;
datalines;
A01 M 25.2
A02 F 23.4
A03 F 24.1
A04 M 24.5
A05 M 27.4
A06 M 27.1
A07 F 22.1
A08 F 25.1
A09 F 24.7
A10 F 23.1
A11 M 23.7
A12 M 28.3
;
run;
< Sample data 형태 >
1. 전체 순위 생성하기
proc rank data=test_data out=test_data ties=low;
var bmi;
ranks rank_bmi
proc sort data=test_data;by rank_bmi;
proc print data=test_data;run;
* ties=low 는 동일한 값이 있을때 그 순위 중 작은 값을, ties=high는 큰값, ties=mean은 평균값을 지정합니다.
* ranks 뒤의 변수명으로 순위값이 저장됩니다.
* ascending 이 default 이고, descending는 큰값부터 작은값 순서로 순위가 매겨집니다.
< SAS Output >
2. 그룹내에서 순위 생성하기
그룹내 순위를 생성하기 위해서는 먼저 그룹(예제에서 gender)으로 정렬이 되어 있어야합니다.
proc sort data=test_data;by gender;
proc rank data=test_data out=test_data ties=low;
by gender;
var bmi;
ranks rank_bmi;
proc sort data=test_data;by gender rank_bmi;
proc print data=test_data;run;
* by 절 뒤에 정렬의 기준이 될 그룹변수를 적습니다.
< SAS Output >
3. N개의 그룹으로 순위를 나누기
proc rank data=test_data out=test_data groups=3;
var bmi;
ranks rank_bmi;
proc sort data=test_data;by rank_bmi;
proc print data=test_data;run;
* groups=n 에 나눌 그룹의 갯수를 적습니다.
* groups=n 을 이용하여 3분위, 4분위, 5분위 ....10분위를 기준으로 순위 나누기를 할 수있습니다.
< SAS Output >
'의학통계 > SAS Tip' 카테고리의 다른 글
SAS에서 Index 만드는 3가지 방법 (0) | 2022.07.09 |
---|---|
SAS에서 Wide, Long 포맷 데이터 변환하기 (0) | 2022.07.04 |
성능향상을 위한 SAS코딩 Tip (0) | 2022.06.30 |
SAS에서 중복된 데이터 제거하기 (0) | 2022.06.23 |
Univariate 를 이용하여 percentile 구하기 (0) | 2022.06.23 |
댓글