SAS - 来自行的百分位数
SAS - percentile from row
我有一个包含一个基本变量并生成了 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”值。
智日:
我有一个包含一个基本变量并生成了 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”值。
智日: