SAS - 来自行的百分位数

时间:2017-10-27 13:19:31

标签: sas row percentile

我有一个带有一个基本变量且生成1000的数据集。基本变量是ps_a_pc,方案称为ps_a_var1 ... ps_a_var1000。

数据集如下:

 ps_a_pc ps_a_var1 .... ps_a_var1000
    0       1      ....    5
    3       6      ....   14

现在我想计算每一行的最小值,最大值和百分位数(20%,40%,60%,80%)。

很容易获得最大值和最小值:

data MinMaxRows;
     set mydata.tot_i;
array x [1000] PS_a_var1-PS_a_var1000;
min = min(of x[*],ps_a_pc);
max = max(of x[*],ps_a_pc);
run;

但有没有简单的方法如何获得每一行的百分位数?我想到的唯一解决方案是转置数据集并使用单变量函数计算它。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您可以使用PCTL功能。

data want;
    set have;
    pct80 = pctl(80, of ps_a_var1-ps_a_var1000);
run;

显然,根据其他百分位数的需要调整'80'值。

答案 1 :(得分:1)

伊日:

查看PCTL() function