- 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 - 布兰德-奥特曼分析
- SAS-卡方
- SAS - 费舍尔精确测试
- 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;
当执行上面的代码时,我们得到以下输出。