登录
首页精彩阅读SAS中数据集的合并
SAS中数据集的合并
2016-09-10
收藏

SAS中数据集的合并

数据集的合并分为两种情形:第一种是纵向合并,即把具有相同变量的数据集合并起来;另一种是横向合并,把记录数目相同的数据集合并起来。


1 纵向合并
纵向合并的方法很简单,就是使用SET 语句将几个数据集的内容复制到一个数据集中就可以了。
例1 上一次曾经把score 数据集按照性别拆分到两个数据集scorem 和scoref,这两数据集具有完全相同的变量所以满足纵向合并的要求现在重新将它们合并程序如下
data combine;
set scorem scoref;
run;
proc print;
run;
输出数据集combine
Obs name sex math chinese english
1 Tom m 95 87 84
2 Mike m 80 85 80
3 Fred m 84 85 89
4 Alex m 92 90 91
5 Cook m 75 78 76
6 Butt m 77 81 79
7 Geoge m 86 85 82
8 Tod m 89 84 84
9 Alice f 90 85 91
10 Jenny f 93 90 83
11 Kate f 97 83 82
12 Bennie f 82 79 84
13 Hellen f 85 74 84
14 Wincelet f 90 82 87
15 Christian f 89 84 87
16 Janet f 86 65 67
可以看到,在新的数据集中原数据集score 中的每一条记录都可以找到,惟一不同的是记录的顺序发生了,变化所有男生的记录都放在前面女生的记录放在后面,这是因为在复制的过程中将scorem 数据集放在scoref 数据集的前面
2 横向合并
横向合并要求数据集必须具有相同的记录数目,一般是同一观测的不同变量横向合并使用MERGE语句

例2 可以把原有的记录所有学生成绩的score 数据集拆分为三个数据集。第一个数据集包括姓名性别数学成绩,第二个数据集包括语文成绩,第三个数据集只包括英语成绩,这样这三个数据集就完全符合横向合并的条件
先将数据集score 拆分开来
data scorea;
set sasuser.score;
keep name sex math;
run;
data scoreb;
set sasuser.score;
keep chinese;
run;
data scorec;
set sasuser.score;
keep english;
run;
这样就有了三个数据集现在运用MERGE 语句将它们重新合并在一起
data combine;
merge scorea scoreb scorec;
run;
proc print;
run;
可以从输出结果中看到,横向合并生成的数据集与原有的score 数据集完全相同,有些时候在几个数据集中观测的顺序可能被打乱这时就必须先排序再合并。


数据分析咨询请扫描二维码

客服在线
立即咨询