SAS - 排序数据集

SAS中的数据集可以根据其中存在的任何变量进行排序.这有助于数据分析和执行其他选项,如合并等.排序可以在任何单个变量上发生,如
以及多个变量.用于在SAS数据集中执行排序的SAS过程命名为 PROC SORT .排序后的结果存储在新数据集中,原始数据集保持
不变.

语法

基本语法SAS中数据集中的排序操作是 :

PROC SORT DATA = original dataset OUT = Sorted dataset;
   BY variable name;

以下是所用参数的说明及减号;

  • 变量名是排序发生的列名.

  • 原始数据集是要排序的数据集名称.

  • 排序数据集是排序后的数据集名称.

示例

让我们考虑以下包含组织员工详细信息的SAS数据集.我们可以使用下面给出的代码对工资数据集进行排序.

DATA Employee; 
   INPUT empid name $ salary DEPT $ ; 
DATALINES; 
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_sal ;
   BY salary;
RUN ;
 
PROC PRINT DATA = Sorted_sal;
RUN ;

执行上述代码后,我们得到以下输出.

sort1

反向排序

默认排序选项按升序排列,这意味着观察按照按顺序排列排序变量的值越低越高.但是我们也可能希望排序按升序发生.

示例

在下面的代码中,使用DESCENDING语句实现反向排序./p>

DATA Employee; 
   INPUT empid name $ salary DEPT $ ; 
DATALINES; 
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_sal_reverse ;
   BY DESCENDING salary;
RUN ;
 
PROC PRINT DATA = Sorted_sal_reverse;
RUN ;

执行上述代码后,我们得到以下输出.

sort2

排序多个变量

通过将它们与BY语句一起使用,可以将排序应用于多个变量.变量按从左到右的优先级排序.

示例

在下面的代码中,数据集首先在变量部门名称上排序然后在变量名称薪水上.

DATA Employee; 
   INPUT empid name $ salary DEPT $ ; 
DATALINES; 
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 
;
RUN;

PROC SORT DATA = Employee OUT = Sorted_dept_sal ;
   BY salary DEPT;
RUN ;
 
PROC PRINT DATA = Sorted_dept_sal;
RUN ;

执行上述代码后,我们得到以下输出.

sort3