【问题标题】:how to calculate percentile in SAS如何在SAS中计算百分位数
【发布时间】:2016-07-12 08:08:02
【问题描述】:

我想计算分布的第 95 个百分位。我想我不能使用proc means,因为我需要这个值,而proc means 的输出是一个表格。我必须使用百分位来过滤数据集并创建另一个数据集,其中仅观察值大于百分位。 显然我不想使用数值。因为我想在macro 中使用它。

【问题讨论】:

    标签: sas dataset percentile


    【解决方案1】:

    不要将汇总统计信息放入宏变量中。您冒着失去精确度的风险。 这是基于您对问题的隐晦描述。

    proc means...
       output out=pct95 pct95=
       run;
    data subset;
       if _n_ eq 1 then set pct95;
       set data;
       if value < pct95;
       run;
    

    【讨论】:

    • 从数据集中获取数字并将其放入宏变量中会如何丢失精度?
    • 十进制数,例如 1/3
    • 对不起,我仍然很困惑。将 1/3 保存到数据集中的字段不会也失去精度吗?宏变量有何不同?
    • 对我来说看起来一样:data x; x = 1/3; call symput ('x',x); put 'DATASET: ' x best22.20; run; %put MACROVAR: &amp;x;
    • @RobertPenr​​idge 看起来可能会欺骗您正在查看格式化的值。这对你来说可能已经足够好了,但我不想担心做一些显然不必要的事情。46 data null; 47组x; 48 xm = "&x"; 49 把 (x xm) (=hex16.); 50跑; x=3FD5555555555555 xm=302E333333333333
    【解决方案2】:

    您可以使用 noprint 选项禁止 proc 方法在新选项卡中输出结果。试试这个:

    proc means data = your_data noprint;
        var variable_name;
        output out = your_data2 p95= / autoname;
    run;
    

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 2016-04-12
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2011-12-29
      • 2013-06-20
      • 2017-10-12
      相关资源
      最近更新 更多