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 语句实现反向排序。

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
广告