如何在 sas 中计算百分位数:示例
以下是在 SAS 中计算数据集百分位数的三种最常见方法:
方法一:计算特定百分位值
/*calculate 70th percentile value for var1*/
proc univariate data =original_data;
var var1;
output out =percentile_data
pctlpts = 70
pctlpre = P_;
run ;
方法 2:计算多个特定百分位值
/*calculate 70th, 80th, and 90th percentile value for var1*/
proc univariate data =original_data;
var var1;
output out =percentile_data
pctlpts = 70 80 90
pctlpre = P_;
run ;
方法3:按组计算百分位数
/*sort original data by var2*/
proc sort data = original_data;
by var2;
run ;
/*calculate percentiles for var1 grouped by var2*/
proc univariate data =original_data;
var var1;
by var2;
output out =percentile_data
pctlpts = 70, 80, 90
pctlpre = P_;
run ;
注意: pctlpts指令指定要计算的百分位数, pctlpre指令指定用于输出中百分位数的前缀。
以下示例展示了如何在 SAS 中对以下数据集使用每种方法:
/*create dataset*/
data original_data;
input team $points;
datalines ;
AT 12
At 15
At 16
At 21
At 22
At 25
At 29
At 31
B16
B22
B25
B29
B 30
B 31
B 33
B 38
;
run ;
/*view dataset*/
proc print data = original_data;
示例 1:计算特定百分位值
以下代码显示如何计算point变量的第 70 个百分位数:
/*calculate 70th percentile value for points*/
proc univariate data =original_data;
var points;
output out =percentile_data
pctlpts = 70
pctlpre = P_;
run ;
/*view results*/
proc print data =percentile_data;
第 70 个百分位数的值为30 。
示例 2:计算多个特定百分位值
下面的代码展示了如何计算points变量的第70、80和90个百分位值:
/*calculate 70th, 80th, and 90th percentile value for points*/
proc univariate data =original_data;
var points;
output out =percentile_data
pctlpts = 70 80 90
pctlpre = P_;
run ;
以下是如何解释结果:
- 第 70 个百分位数的值为30 。
- 第 80 个百分位数的值为31 。
- 第 90 个百分位数值为33 。
示例 3:按组计算百分位数
以下代码显示了如何计算按团队变量分组的点变量的第 70、80、90 和 95 个百分位数的值:
/*sort original data by team*/
proc sort data = original_data;
by team;
run ;
/*calculate percentiles for points grouped by team*/
proc univariate data =original_data;
var points;
by team;
output out =percentile_data
pctlpts = 70 , 80 , 90 95
pctlpre = P_;
run ;
输出表显示 A 队和 B 队的得分变量的第 70、80、90 和 95 个百分位值。
其他资源
以下教程解释了如何在 SAS 中执行其他常见任务: