📜  SAS中的PROC排序

📅  最后修改于: 2021-01-08 14:11:19             🧑  作者: Mango

在SAS数据集中排序

升序|降序| BY陈述

在上一个主题中,我们学习了SAS数据集,并看到数据集是每个SAS程序的重要组成部分和基础。在本主题中,我们将了解SAS数据集中的PROC排序。同时,我们将学习SAS中的SAS默认排序和反向排序。默认排序和反向排序是数据集排序的两种方式。我们还将研究BY语句,该语句对于数据值的排序至关重要。

在SAS中排序

SAS中的排序是根据变量以升序或降序排列数据的方式排列数据值(或观察值)的过程。 SAS的默认排序顺序是升序,但是我们也可以使用“ by statement ”按降序对数据值进行排序,也可以根据我们的选择。在使用“按语句”时,SAS根据数据值的子集产生结果。变量的排序有助于更好的分析并提供最佳结果。


注意:SAS不是区分大小写的语言。

句法:

PROC sort data=;
by ;
run;

SAS PROC默认排序(升序)

排序升序

当我们想通过单个变量对数据进行排序而又不提及排序顺序(升序或降序)时,SAS会遵循默认的排序顺序,即ascending

让我们通过一个例子来理解:

在下面的示例中,我们获取班级学生的数据。学生的数据包括他们的学生ID,姓名,性别,年龄,体重和身高,为了进行排序,我们使用单个变量weight 。结果,它将根据学生体重的升序对数据进行排序。

data one;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
6 Jaya f 55 63 125
2 Vinita f 34 68 130
7 Kumar m 43 64 130
4 Anita f 29 65 153
5 Taufik m 21 45 110
8 Boby m 32 71 155 
3 Ankita f 40 69 120
;
run;  
proc sort data=one;
    by weight;
run;
/*will sort data one by the variable weight in ascending order */
proc print data=one;
run;

在SAS Studio中运行以上代码:

输出:

您可以在输出表中看到,SAS已根据重量的升序对数据进行了排序。

降序排列

排序降序排列

如果需要按降序排序,则必须在By语句和变量中提及它。

句法:

proc sort data= dataset name;
    by descending variable name;
run;
proc print data= dataset name ;
run;

让我们通过一个例子来理解:

data one;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
6 Jaya f 55 63 125
2 Vinita f 34 68 130
7 Kumar m 43 64 130
4 Anita f 29 65 153
5 Taufik m 21 45 110
8 Boby m 32 71 155 
3 Ankita f 40 69 120
;
run;  
proc sort data=one;
    by descending age;
run;
proc print data=one;
run;

在SAS Studio中运行以上代码:

输出:

您可以在输出表中看到,SAS已根据年龄的降序对数据进行了排序。

按语句排序

排序按声明

如果需要通过对数据值的每个子集应用过程(PROC)来对数据进行排序,请使用By语句。您可以将其应用于具有可分为几部分的数据值的变量。我们可以同时对多个变量进行排序。

句法:

proc sort data=dataset name;
    by variable name;
run;
proc print data= dataset name;
    by variable name;
run;

让我们通过一个例子来理解:

在示例中,我们基于性别变量进行排序,该变量包含可以分为两部分的数据值,即男性和女性。

data one;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
6 Jaya f 55 63 125
2 Vinita f 34 68 130
7 Kumar m 43 64 130
4 Anita f 29 65 153
5 Taufik m 21 45 110
8 Boby m 32 71 155 
3 Ankita f 40 69 120
;
run;  
proc sort data=one;
    by sex;
run;
proc print data=one;
    by sex;
run;

在SAS Studio中运行以上代码:

输出:

您会在输出表中看到SAS已根据性别对数据进行了排序。在第一个表中,数据按女性(性别= f)排序,在第二个表中,数据按男性(性别= m)排序。