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