2017-01-12 8 views
0

이전 변수의 분류 인 다른 변수 (동일한 데이터 세트에서도 괜찮습니다)를 빌드하는 방법을 찾고 싶습니다. 버킷의 수를 선택합니다 (백분위 수를 컷오프로 사용하는 exemples의 경우 : p10, p20, p30 등). 이제 변수의 백분위 수를 proc univariate으로 추출하는 작업을 수행합니다. 그러나 이것은 백분위 수 (내 cutoffs) 만 제공하고 백분위 수를 사용하여 수동으로 새 변수를 만들어야합니다. 컷오프 및 버킷 수를 입력으로 제공하는이 새 변수를 어떻게 만들 수 있습니까? 당신이 가정 사전SAS에서 숫자 변수의 코드화

답변

0

에서

덕분에 동일한 비율 크기의 양동이를 원하는, 다음 PROC RANK 그냥 당신이 당신이 찾고있는 할 수 있습니다. 당신 P20, P40 ..., P80 컷오프 동등한다 (0 ..라는 4) (5 개) 그룹을 줄 것이다

data test; 
do i=1 to 100; 
output; 
end; 
run; 

proc rank data=test out=test2 groups=5; 
var i; 
ranks grp; 
run; 

.

등가가 아닌 버킷 (예 : P10, P40, P60, P90)을 원한다면 가장 낮은 레벨을 선택하고 그룹을 결합해야합니다. 위 그룹 사용 :

%let groups=10; 

proc rank data=test out=test2 groups=&groups; 
var var; 
ranks grp; 
run; 

/* 
    P = (grp+1)*&groups 
    Cutoffs 10, 40, 60, 90 
    implicit 5 new groups 
*/ 

%let n_cutoff=4; 
%let cutoffs=10, 40, 60, 90; 

data test3(drop=_i cutoffs:); 
set test2; 
array cutoffs[&n_cutoff] (&cutoffs); 

P = (grp+1)*&groups; 

do _i=1 to &n_cutoff; 
    if P <= cutoffs[_i] then do; 
     new_grp = _i-1; 
     leave; 
    end; 

    if _i = &n_cutoff then 
     new_grp = _i; 
end; 

run; 

10은 P 값의 가장 낮은 공통 분모입니다. 100/10 = 10이므로 PROC RANK에서 10 개의 그룹이 필요합니다.

끝에있는 데이터 단계는 찾고있는 컷오프를 사용하여 그룹을 결합합니다.

+0

감사합니다. 아마 그룹 = 10으로 proc 순위는 괜찮습니다. 그러나 나는 왜 많은 관찰이 proc 단변 산출물을 이용한 분류와 비교하여 다른 양동이에 들어가는 지 알지 못합니다. – TheZone

+0

@GiacomoRosaspina 데이터 세트에 많은 관계가 있습니까? – Reeza

+0

@Reeza 어떤 관계가 있는지 모르겠다 – TheZone