- SAS 教程
- SAS - 首页
- SAS - 概述
- SAS - 环境
- SAS - 用户界面
- SAS - 程序结构
- SAS - 基本语法
- SAS - 数据集
- SAS - 变量
- SAS - 字符串
- SAS - 数组
- SAS - 数值格式
- SAS - 运算符
- SAS - 循环
- SAS - 决策
- SAS - 函数
- SAS - 输入方法
- SAS - 宏
- SAS - 日期和时间
- SAS 数据集操作
- SAS - 读取原始数据
- SAS - 写入数据集
- SAS - 合并数据集
- SAS - 合并数据集
- SAS - 数据子集
- SAS - 排序数据集
- SAS - 格式化数据集
- SAS - SQL
- SAS - 输出交付系统
- SAS - 模拟
- SAS 基本统计过程
- SAS - 算术平均数
- SAS - 标准差
- SAS - 频数分布
- SAS - 交叉表
- SAS - t检验
- SAS - 相关分析
- SAS - 线性回归
- SAS - Bland-Altman 分析
- SAS - 卡方检验
- SAS - Fisher 精确检验
- SAS - 重复测量分析
- SAS - 单因素方差分析
- SAS - 假设检验
- SAS 有用资源
- SAS - 快速指南
- SAS - 有用资源
- SAS - 问答
- SAS - 讨论
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;
执行上述代码后,我们将获得以下输出。
可以通过删除不需要的变量来获得相同的结果。以下代码说明了这一点。
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;
执行上述代码后,我们将获得以下输出。
广告