2017-01-12 7 views
0

古い変数の分類である別の変数(同じデータセットであっても問題ありません)を構築する方法を知りたいと思います。バケツの数を選択します(カットオフとしてパーセンタイルを使用するexemplesの場合:p10, p20, p30など)。 これで変数の百分位数をproc univariateで抽出しました。しかし、これは私にパーセンタイル(私のカットオフ)のみを与えて、その後パーセンタイルを使って新しい変数を手動で構築しなければなりません。 カットオフとバケットの数を入力として与えるこの新しい変数を作成するにはどうすればよいですか?事前に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; 

は、P値の最小の共通分母です。 100/10 = 10だから、PROC RANKから10グループが必要です。

最後のデータステップは、探しているカットオフを使用してグループを結合します。

+0

ありがとうございました。おそらくグループ= 10のprocランクは大丈夫です。しかし、私は、なぜ単一変量のprocを用いた分類と比較して、多くの観察が異なるバケツに入っているのか分かりません。 – TheZone

+0

@GiacomoRosaspinaあなたのデータセットにはたくさんの関係がありますか? – Reeza

+0

@Reezaどのような結び付きがわからない – TheZone

関連する問題