SAS - 数据集子集化


对 SAS 数据集进行子集化意味着通过选择较少数量的变量或较少数量的观测值或两者来提取数据集的一部分。变量的子集是通过使用KEEPDROP语句完成的,而观测值的子集是使用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; 

当执行上面的代码时,我们得到以下输出。

子集1

通过删除不需要的变量可以获得相同的结果。下面的代码说明了这一点。

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; 

当执行上面的代码时,我们得到以下输出。

子集2