我正在尝试寻求一些验证,这对大多数人来说可能是微不足道的,但我绝不是统计专家。我试图根据每种药物和位置内的分数选择前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;
这是否实现了我想要做的事情,或者说这一切都错了?对不起,如果这对大多数人来说真是微不足道。 谢谢
答案 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;