SAS|数据集合并

纵向合并set

利用set语句实现两个或多个数据集的纵向合并
在纵向合并中,不管有无共同变量,合并的数据集的数据均会显示,只不过在set关键词后,哪个数据集在前会优先显示哪个数据集。

/*练习1: 把文件夹中class1数据和class2数据纵向合并起来*/
data study.class12;
set study.class1 study.class2;
run;
proc print data=study.class12;
run;
/*ERROR: Variable weight has been defined as both character and numeric.两个表中的weight是不同类型的变量*/
data study.class12;
set study.class1 study.class2(rename=(weight=wweight));
run;
proc print data=study.class12;
run;

class1
在这里插入图片描述
class2
在这里插入图片描述
class12
在这里插入图片描述

/*练习2: 把文件夹中class1数据和class3数据纵向合并起来,用两种方式实现(class1和class3互换位置)观察效果*/
data study.class13;
set study.class1 study.class3;
run;
proc print data=study.class13;
run;
/*WARNING: Multiple lengths were specified for the variable weight by input data set(s). This can cause truncation of data.
WARNING: 输入数据集为变量“weight”指定了多个长度。这会造成数据截断。
数据截断class1中weight比class3的长度短得多*/
data study.class31;
set study.class3 study.class1;
run;
proc print data=study.class31;
run;

class3
在这里插入图片描述
class31
在这里插入图片描述
class13
在这里插入图片描述

交叉合并set by

交叉合并需要根据by后面的变量进行排序

横向合并merge

数据集的横向合并是通过merge实现的。在无缺失值的观测中的共同变量显示merge语句的最后一个数据集的共同变量的值,有缺失值的显示该变量观测的共同变量值。

/*练习3: 把文件夹中class1数据和class4数据横向合并起来*/
data study.class14;
merge study.class1 study.class4;
run;
proc print data=study.class14;
run;

class4
在这里插入图片描述
class14
在这里插入图片描述

匹配合并merge by

数据集的一对一、一对多合并可以利用merge by来实现,数据集会根据by后面的变量进行合同。
在没有共同变量的情况下,set by的操作结果与merge by的操作结果是相同的。

/*练习4: 把文件夹中class1数据和class4数据横向合并起来,使得每个受试者的weight和height一一对应*/
data study.class41;
merge study.class1 study.class4;
by name;
run;
proc print data=study.class41;
run;

class41
在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值