SAS - 資料子集



對 SAS 資料集進行子集化是指透過選擇較少的變數或較少的觀測值或兩者來提取資料集的一部分。變數子集化是使用 **KEEP** 和 **DROP** 語句完成的,而觀測值子集化是使用 **DELETE** 語句完成的。

子集化操作產生的結果資料儲存在一個新的資料集中,該資料集可用於進一步分析。子集化主要用於分析資料集的一部分,而無需使用那些可能與分析無關的變數或觀測值。

變數子集化

在這種方法中,我們僅從整個資料集中提取少數變數。

語法

SAS 中變數子集化的基本語法如下:

KEEP var1 var2 ... ;
DROP var1 var2 ... ;

以下是所用引數的描述:

  • **var1 和 var2** 是需要保留或刪除的資料集中的變數名。

示例

考慮以下包含組織員工詳細資訊的 SAS 資料集。如果我們只對獲取資料集中的姓名和部門值感興趣,則可以使用以下程式碼。

DATA Employee; 
   INPUT empid ename $ 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;
DATA OnlyDept;
   SET Employee;
   KEEP ename DEPT;
   RUN;
   PROC PRINT DATA = OnlyDept; 
RUN; 

執行上述程式碼後,我們將獲得以下輸出。

subsetting1

可以透過刪除不需要的變數來獲得相同的結果。以下程式碼說明了這一點。

DATA Employee; 
   INPUT empid ename $ 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;
DATA OnlyDept;
   SET Employee;
   DROP empid salary;
   RUN;
   PROC PRINT DATA = OnlyDept; 
RUN; 

觀測值子集化

在這種方法中,我們僅從整個資料集中提取少數觀測值。

語法

我們使用 PROC FREQ 來跟蹤為新資料集選擇的觀測值。

觀測值子集化的語法如下:

IF Var Condition THEN DELETE ;

以下是所用引數的描述:

  • **Var** 是基於其值將使用指定條件刪除觀測值的變數的名稱。

示例

考慮以下包含組織員工詳細資訊的 SAS 資料集。如果我們只對獲取薪資超過 700 的員工資料感興趣,則可以使用以下程式碼。

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;
DATA OnlyDept;
   SET Employee;
   IF salary < 700 THEN DELETE;
   RUN;
   PROC PRINT DATA = OnlyDept; 
RUN; 

執行上述程式碼後,我們將獲得以下輸出。

subsetting2
廣告