ループのすべての値を保存せずに5番目と95番目の百分位数を計算する方法はありますか?SASのループの値を格納せずにパーセンタイルを計算する方法はありますか?
%let it=10000;
data test;
length arrayStore$32767;
arrayStore='';
sum=0;
min=99999;
max=-99999;
do i=1 to ⁢
number=rand('Uniform');
sum + number;
if number<min then min=number;
if number>max then max=number;
arrayStore=catx(' ',arrayStore,round(number,0.1));
end;
mean=sum/⁢
P5=0; *?;
p95=0; *?;
* count numbers in arrayStore;
do j=1 to countw(arrayStore, ' ', 's');
end;
run;
私はそれが可能だとは思わないが、これを達成するための最良の選択肢は何でしょうか?
文字列に値を格納し、並べ替えて、x番目の位置を見つけますか? それを10kの数値変数に格納しますか?
私はすでに別のレコード(行)に数値を格納しようとしましたが、実際には平均値とP2_5とP97_5値が必要な間にソートに時間がかかる34Gbデータセットにつながります。私は計算をより速くするために、より少ない値を格納しようとしています。
ありがとうございます!
proc手段または単変量を使用するのではなく、データステップで要約統計量を計算しようとする理由はありますか? – Reeza
@Reezaはい、私は2.5と97.5パーセンタイル(proc単変量ではない)をソートする必要なしに –
procを意味するのはなぜですか?仕事のための最良のツール – Reeza