SAS-计算人口的最高百分比

时间:2017-05-24 13:57:00

标签: sas statistics percentage proc-sql

我正在尝试寻求一些验证,这对大多数人来说可能是微不足道的,但我绝不是统计专家。我试图根据每种药物和位置内的分数选择前1%的患者。数据看起来像这样(在更大的范围内):

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%患者的代码片段如下: 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;

这是否实现了我想要做的事情,或者说这一切都错了?对不起,如果这对大多数人来说真是微不足道。 谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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

然后在表格中过滤值>=p99

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