SAS - 子集数据集

对 SAS 数据集进行子集化意味着通过选择较少数量的变量或较少数量的观察值或两者兼而有之,提取数据集的一部分。 变量的子集是通过使用 KEEPDROP 语句完成的,而观察的子集是使用 DELETE 语句完成的。

此外,来自子集操作的结果数据保存在一个新数据集中,可用于进一步分析。 子设置主要用于分析数据集的一部分,而不使用那些可能与分析无关的变量或观察值。


子集变量

在这种方法中,我们只从整个数据集中提取几个变量。

语法

SAS中子设置变量的基本语法是 −

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

以下是使用的参数说明 −

  • var1 和 var2 是数据集中需要保留或删除的变量名称。

示例

考虑以下包含组织员工详细信息的 SAS 数据集。 如果我们只对从数据集中获取 Name 和 Department 值感兴趣,那么我们可以使用下面的代码。

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