SAS-第六章

  • 格式:pdf
  • 大小:319.45 KB
  • 文档页数:12

第六章面向多个数据集的加工
第一节数据集的拼接
一、数据集的串接(SET)
使用SAS的数据步的SET语句可以实现数据集的串接。

串接数据集的数据步的一般形式为:
DATA 数据集;
SET 数据集1 数据集2 ……;
RUN;
在一个SET语句中可读入多个SAS数据集。

除非使用了数据集选项DROP=或KEEP=,输出数据集中可包含所有输入数据集中的变量。

例子见071.sas。

data a;
input num 1 var $ 3-4 A $ 6-7;
cards;
1 A1 X1
2 A2 X2
5 A3 X3
;data b;
input num 1 var $ 3-4 B $ 6-7;
cards;
3 B1 Y1
4 B2 Y2
6 B3 Y3
;
data combination;
set a b;
run;
proc print;
run;
使用BY语句进行穿插
二、使用BY语句进行穿插
一般形式为:
DATA 数据集;
SET 数据集1 数据集2 ……;
BY 变量1 变量2 ……;
RUN;
在上述形式的数据步程序中使用BY语句,要求读入的每个数据集必须按BY变量值升序排列!
以程序072.sas为例。

data a;
input num 1 var $ 3-4 A $ 6-7;
cards;
1 A1 X1
2 A2 X2
5 A3 X3
;data b;
input num 1 var $ 3-4 B $ 6-7;
cards;
3 B1 Y1
4 B2 Y2
6 B3 Y3
;
data combination;
set a b;
by num;
run;
proc print;
run;
注意:在两个数据集a与b中,num均已经按照升序排列!
三、数据集的并接(merge)
一般形式为:
DATA 数据集;
MERGE 数据集1 数据集2 ……;BY 变量1 变量2 ……;
RUN;
程序如073.sas所示。

data class1;
input name $ 1-8 sex $ 9 height 13-16; cards;
Alfred M 69
Alice F 56.5
Becka F 65.3
Gail F 64.3
Karen F 56.3
Kathy F 59.8
Mary F 66.5
Sandy F 51.3
Sharon F 62.5
Tammy F 62.8
;
data class2;
input name $ 1-8 age 9-10 weight 13-17; cards;
Alfred 14 112.5
Alice 13 84
Becka 13 98
Gail 14 90
Karen 12 77
Kathy 12 84.5
Mary 15 112
Sandy 11 50.5
Sharon 15 112.5
Tammy 14 102.5
;
data class;
merge class1 class2;
by name;
run;
proc print;
var name sex age height weight;
run;
结果如下:
四、用analyst菜单拼接数据集
1. 拼接(set)数据集
打开分析员应用程序,接着打开数据集data.class3。

然后打开菜单如下:
说明:事实上,也可先打开该菜单,然后在菜单中选中要拼接的两个或多个数据集!
然后打开数据集class4。

结果如下:
然后将此数据集保存为set_class即可。

最终数据集如下:
相应的程序如下:
即程序074.sas。

data BINED0;
length NAME $ 7 SEX $ 1 HEIGHT 8; set Data.Class3 Data.Class4;
keep NAME SEX HEIGHT;
run;
2. 合并(merge)数据集
首先打开菜单。

其次选择要合并的数据集。

然后选择关键变量。

点按OK。

保存数据文件为merge_class。

数据集内容如下。

程序如下:
即程序075.sas。

proc sort data=DA TA.CLASS1 out=WORK._TABLE1_;
by NAME;
run;
proc sort data=DA TA.CLASS2 out=WORK._TABLE2_;
by NAME;
run;
data BINED0;
length name $ 6 sex $ 1 height 8 age 8 weight 8;
merge WORK._TABLE1_ (in=TABLE1) WORK._TABLE2_ (in=TABLE2) ;
by NAME;
if TABLE1 and TABLE2;
run;。