【发布时间】:2016-07-12 08:08:02
【问题描述】:
我想计算分布的第 95 个百分位。我想我不能使用proc means,因为我需要这个值,而proc means 的输出是一个表格。我必须使用百分位来过滤数据集并创建另一个数据集,其中仅观察值大于百分位。
显然我不想使用数值。因为我想在macro 中使用它。
【问题讨论】:
标签: sas dataset percentile
我想计算分布的第 95 个百分位。我想我不能使用proc means,因为我需要这个值,而proc means 的输出是一个表格。我必须使用百分位来过滤数据集并创建另一个数据集,其中仅观察值大于百分位。
显然我不想使用数值。因为我想在macro 中使用它。
【问题讨论】:
标签: sas dataset percentile
不要将汇总统计信息放入宏变量中。您冒着失去精确度的风险。 这是基于您对问题的隐晦描述。
proc means...
output out=pct95 pct95=
run;
data subset;
if _n_ eq 1 then set pct95;
set data;
if value < pct95;
run;
【讨论】:
data x; x = 1/3; call symput ('x',x); put 'DATASET: ' x best22.20; run; %put MACROVAR: &x;
您可以使用 noprint 选项禁止 proc 方法在新选项卡中输出结果。试试这个:
proc means data = your_data noprint;
var variable_name;
output out = your_data2 p95= / autoname;
run;
【讨论】: