SAS进阶《深入解析SAS》之对多数据集的处理
1. 数据集的纵向串接:
代码语言:javascript
复制数据集的纵向串接指的是,将两个或者多个数据集首尾相连,形成一个新的数据集。
据集的横向合并:
数据集的横向合并,指的是将两个或者多个数据集根据某种原则横向合并起来,形成新的数据集。
2. 数据集的纵向串接两种方法:1)使用SAS DATA步的SET语句。2)使用SAS过程步的APPEND过程。
代码语言:javascript
复制2.1. 使用SET步纵向串接形式如下:
DATA 新数据集;
SET 数据集1 数据集2 <数据集3 数据集4 ...>;
BY 变量1 <变量2 变量3 变量4...>;
RUN;
使用APPEND过程
PROC APPEND BASE=主数据集 <DATA=追加数据集> <FORCE>;
2.2. 使用APPEND过程,SAS不会处理主数据集中的观测,而是直接将追加数据集的观测添加到主数据集最后一条观测后面,且变量仅包含主数据集中的变量。
3. 数据集的横向合并使用MERGE的两种情况:
代码语言:javascript
复制不使用BY语句合并,也称为一对一合并。
DATA WORK.COMBINED;
MERGE WORK.DATA1 WORK.DATA2;
RUN;
一对一合并原则:1)新数据集的第一条观测包含各个输入数据集中第一条观测的信息,第二条观测包含各个数据集中第二条观测的信息,不足的观测用缺失值不足。2)新数据集含有的观测数为所有输入数据集的最大观测是数。
使用BY语句合并,也称为匹配合并。
DATA WORK.COMBINED;
MERGE WORK.DATA1 WORK.DATA2;
BY Year;
RUN;
4. 使用数据集选项IN=操作观测
代码语言:javascript
复制数据集选项IN=可以运用在SET、MERGE、MODIFY、UPDATE语句中的任何数据集后面。
5. 数据集的更新UPDATA
代码语言:javascript
复制DATA 新数据集;
UPDATA 主数据集 更新数据集
<UPDATATE=MISSINGCHECK | NOMISSINGCHCK>;
BY 变量1 <变量2 变量3 变量4...>;
RUN;
6. UPDATE语句和MERGE与的区别:
代码语言:javascript
复制1)UPDATA语句只能操作两个数据集;MERGE语句可以对两个或者两个以上数据集进行操作。
2)使用UPDATA语句时必须使用BY语句;MERGE语句在不使用BY语句时也可以按观测号进行一对一合并。
2)在处理缺失值时,UPDATA语句可以控制是否用缺失值对主数据集进行替换;MERGE语句中后一数据集中的缺失值一定能会覆盖前一数据集中的值。
4)当BY变量值在后一数据集或者更新数据集中不唯一时,UPDATA语句和MERGE语句的处理方式不一样。
7. 数据集的更改
代码语言:javascript
复制7.1 单个数据集的更改MODIFY语句
DATA 原数据集;
MODIFY 原数据集;
RUN;
7.2 两个数据集的更改MODIFY语句
DATA 主数据集;
MODIFY 主数据集 修改数据集;
BY 变量1 <变量2 变量3 ...>;
RUN;