2017-12-08 7 views
0

percentile_Idle_Timeという計算カラムを作成しようとしています(すべての値に対してパーセンタイルを計算しようとしています)。列は、idle_time%列のパーセント値です。数値カラムからパーセンタイルカラムを計算する

ので、入力されたデータは、私が

だから、アイドル時間の%値のパーセンタイル位置に他ならないpercentile_Idle_Timeと呼ばれる新しい列を作成しようとしています、だから、

Total Time Idle Time Idle Time %  
5:10:00  0:14:00  4.6% 
3:09:00  0:20:00  9.49% 
    .    .   . 
    .    .   . 

あり、出力データは

Total Time Idle Time Idle Time % percentile_Idle_Time 
5:10:00  0:14:00  4.6%    75.4 
3:09:00  0:20:00  9.49%   97.9 
    .    .   .    . 
    .    .   .    . 

ノートのようにする必要があります。数字は(正確ではない)、かなり粗い 私は

を使用してみました
proc univariate data=WORK.QUERY_FOR_PEOPLENET_DATA_00_0000 noprint; 
by DriverId; 
var 'Short Idle Time %'n; 
output pctlpre=P_ ; 
run; 

しかし、それは動作しません。もう1つの課題は、%欄のパーセンタイルスコアを取ることです。

答えて

1

これを手動で実行します。データを昇順にソートし、NOBSを使用して観測数を取得します。合計値を得るにはNOBSで除算するにはnを使用してください。

proc sort data=sashelp.class out=class; 
by weight; 
run; 


data want; 
    set class Nobs=myobs; 

    percentile = _n_/myobs; 
run; 

これは、ネクタイを処理しないことに注意してください。対処が必要な場合は、代わりにPROC RANKを使用してください。私は通常、100のグループでそれを行い、その後、1から100のグループを取得します。しかし、もしそれがあなたが探しているものなら、96.5パーセンタイル。

proc rank data=sashelp.class out=ranked_class groups=100; 
var weight; 
ranks weight_percentile; 
run; 

EDIT:データステップ内の参照が固定され、整列が整えられます。

+1

これは、おそらく 'PROC RANK'を第2の解決策ではなく第1の解決策として使用します(私は' PROC RANK'が好きです)。また、10kにおめでとう、Reeza、削除された投稿を見ることを歓迎します! – Joe

+0

私はPROC RANKソリューションも好んでいますが、OPには75.4%のサンプルが含まれているため、その理由で最初のオプションが必要な場合があります。 – Reeza

+0

はい、procランクは完全に動作します –

関連する問題