- 16
- 0
- 约2.84万字
- 约 24页
- 2017-09-20 发布于河北
- 举报
SAS面向多个数据集的加工.doc
第6章 面向多个数据集的加工
6.1 数据集的合并
6.1.1 串行合并(纵向合并)
1. 将含有相同变量集合的/* Program _6-1-l.sas */
DATA ex060101;
INPUT(v1- v2)($);
DATALINES;
A001 B160
A002 B161
;
RUN;
DATA ex060102;
INPUT(v1-v2)($);
DATALINES;
A003 B162
A004 B163
A005 B164
;
DATA ex060103;
SET ex060101 ex060102;
PUT _ALL_;
RUN;
Log窗口显示:
v1=A001 v2=B160 _ERROR_=0 _N_=1
v1=A002 v2=B161 _ERROR_=0 _N_=2
v1=A003 v2=B162 _ERROR_=0 _N_=3
v1=A004 v2=B163 _ERROR_=0 _N_=4
v1=A005 v2=B164 _ERROR_=0 _N_=5
NOTE: There were 2 observations read from the data set WORK.EX060101.
NOTE: There were 3 observations read from the data set WORK.EX060102.
NOTE: The data set WORK.EX060103 has 5 observations and 2 variables.
法2:
Data ex060103;
If last=0 then do;
Set ex060101 end=last;
put _all_;
Return;
End;
Input (v1-v2) ($);
Datalines;
A003 B162
A004 B163
A005 B164
;
Run;
Log窗口显示:
last=0 v1=A001 v2=B160 _ERROR_=0 _N_=1
last=1 v1=A002 v2=B161 _ERROR_=0 _N_=2
last=1 v1=A003 v2=B162 _ERROR_=0 _N_=3
last=1 v1=A004 v2=B163 _ERROR_=0 _N_=4
last=1 v1=A005 v2=B164 _ERROR_=0 _N_=5
[说明] ①END=是SET语句的选择项,跟在它后面的LAST是任选的1个SAS变量名, 它的值一开始被置为0,直到SET语句读完输入数据集(1个或多个)的最后1个观测时, 其值为1。变量LAST不包含在新创建的数据集中。②SAS从数据集中读入1个观测并重新输入后,本来应该顺序执行下面的INPUT语句,但它执行完语句后又遇到一个RETURN语句,RETURN语句的作用就是让SAS重新回到DATA步的开始,于是重新判断LAST是否为0,由于中还有观测,LAST为0,故又读入中一个观测并输出,遇到RETURN语句又返回,直到读完中所有观测,LAST为1,才跳到IN语句, 读入数据。APPEND过程
将某一SAS数据文件的数据加到另外一个SAS数据文件的后面。
语法:
PROC APPEND BASE=数据文件 DATA=数据文件 ;
/* Program_2-8-1_append.sas */
proc append base= ex060101 data= ex060102;
run;
proc print data=ex060101;
run;
行1:BASE为主文件,要将DATA后指定的数据文件添加进来。
使用APPEND时两个SAS数据文件的架构必须相同,否则无法添加成功
2. 串行合并时若合并的数据文件有不同的变量,则新的数据文件将是所有数据文件的变量的集合。
语法:SET 数据集l 数据集2 … ;
/* Program_6.1.2.Sas */
DATA ex060104;
INPUT(v1-v3)($);
DATALINES;
A001 B160 TPE
A002 B161 HKG
A003 B162 MNL
A004 B163 LAX
A005 B164 NYC
A006 B165 SIN
;
RUN;
DATA ex060105;
INPUT(v1-v2)($) V4;
DATALINES;
A003 B160 361
A002 B161 260
A003 B162 402
A004 B163 298
A005 B164 280
A006 B165 271
;
DATA ex
原创力文档

文档评论(0)