2017-05-24 163 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

有多种方法可以计算和估计百分位数。一个简单的方法是使用PROC SUMMARY

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

这将创建一个包含99百分位的变量p99名为pct的数据集。

然后筛选表值>=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