SAS - 行的百分位数

标签 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;

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

感谢您的任何建议。

最佳答案

您可以使用PCTL功能。

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

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

关于SAS - 行的百分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46976031/

相关文章:

google-cloud-platform - GCP控制台: How are percentile charts calculated?

sql - 在 SAS 中同时运行多个查询

mysql - mysql/sas 或 proc sql 中的分钟间隔

mysql - SQL:在查询结果末尾添加短划线(-)

php - (MYSQL) 使用特定参数选择最后一行

excel - 当中值计算为零时崩溃(程序没有响应)(VBA)

python - 属性错误 : 'module' object has no attribute 'percentile'

sas - 如何在 sas 数据步骤中为每个观察执行一段宏?

sas - 如何查看我的过程中可用的输出选项?

r - 如何使用 R 将每个文件的数据添加为附加行,从而将不同的 .csv 文件合并为一个完整的文件?