2017-05-24 11 views
1

私はいくつかの検証をしようとしていますが、これはほとんどの場合自明ではないかもしれませんが、統計上の専門家ではありません。私は各薬剤と場所内のスコアに基づいて上位1%の患者を選択しようとしています。SAS-人口のトップ割合を計算する

Patient drug place score 
John   a  TX  12 
Steven  a  TX  10 
Jim   B  TX  9 
Sara   B  TX  4 
Tony   B  TX  2 
Megan  a  OK  20 
Tom   a  OK  10 
Phil   B  OK  9 
Karen  B  OK  2 

次のように私はそれらの上位1%の患者を計算するために書かれているコードsnipitがある:データは、この(非常に大きな規模で)のようなものになります のproc SQLを。

create table example as 
select *, 
score/avg(score) as test_measure 
from prior_table 
group by drug, place 
having test_measure>.99; 
quit; 

これは私がやろうとしていることを達成するのか、それともすべて間違っているのでしょうか?申し訳ありませんが、これはほとんどの場合、本当に些細なことです。 ありがとう

答えて

0

パーセンタイルを計算して推定する方法は複数あります。簡単な方法は、99パーセンタイルを含む変数p99pctという名前のデータセットを作成しますPROC SUMMARY

proc summary data=have; 
var score; 
output out=pct p99=p99; 
run; 

これを使用することです。その後

>=p99

proc sql noprint; 
create table want as 
select a.* 
    from have as a 
    where a.score >= (select p99 from pct); 
quit; 
+0

のためのあなたのテーブルをフィルタリングありがとう、と私はちょうど追加することになり、それぞれの場所や薬の中に99パーセンタイルを得る「クラスの場所の薬を、」ステートメント、正しい? – bmb1020

+0

正しい。明らかにクエリを変更する必要があります。 – DomPazz

+0

あなたのお手伝いを誠にありがとうございます。 – bmb1020