六:merge语句的使用(一个指针,一个pdv)
merge语句是横向合并数据集,合并前必须两个数据集都要按照合并变量进行排序;
proc sort data=chapt3.merge_a;by x;run;
proc sort data=chapt3.merge_b;by bx;run;
data ed;
merge chapt3.merge_a(in=a)
by x;
Ina=a;inb=b;
run;
以两个数据集的x变量为关键表链两个表相连,由于两个表中都有一个y变量,由于同名b表中的y会覆盖对应匹配到的a中的y的值;
七:update语句(一个指针,一个pdv)
update在横向合并两个数据集时的方式和merge相似,都是用更新数据集修改主数据集。
proc sort data=chapt3.merge_a;by x;run;
proc sort data=chapt3.merge_b;by bx;run;
data ed;
Update
by x;
run;
update语句一定要和by语句一起;这个by语句给出了主数据集和更新数据集共有的变量;
update语句必须先对数据集按照by后面的变量进行排序;
主数据集中by后面指定的变量对应的观测值最好是唯一的,因为如果不唯一,则只会替代第一个记录;
更新数据集存在的缺失值处理是通过updatemode来完成的,updatemode=missingcheck,则检查修改数据集,若存在缺失值,则保留主数据集中相应数据,该选项为默认值;
Updatemode=nomissingcheck,不检查修改数据集,主数据集中相应值一概被替换