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 ;
当执行上面的代码,我们可以得到下面的输出。
反向排序
默认排序选项按升序排列,这意味着观察值按排序变量的较低值到较高值排列。 但我们也可能希望排序以升序发生。
例
在下面的代码中,通过使用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 ;
当执行上面的代码,我们可以得到下面的输出。
排序多个变量
通过在BY语句中使用它们,可以对多个变量应用排序。 变量以从左到右的优先级排序。
例
在下面的代码中,数据集首先在变量名称上排序,然后在变量名称salary上排序。
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 ;
当执行上面的代码,我们可以得到下面的输出。