如何在SAS中按ID匹配另一数据集的值并重复填充?
SAS数据集匹配填充的最简实现方法
针对需求——将数据集2中对应ID的num值匹配填充到数据集1的同ID记录中,最简的实现方式有两种,可根据数据集的排序情况选择:
方法一:PROC SQL左连接(无需预先排序)
这种写法无需对数据集做排序处理,代码简洁直观,是最省心的选择:
PROC SQL; CREATE TABLE dataset1_new AS SELECT a.*, b.num FROM dataset1 a LEFT JOIN dataset2 b ON a.ID = b.ID; QUIT;
说明
通过LEFT JOIN保留数据集1的所有记录,依据ID字段匹配数据集2中的num值,自动将对应ID的num填充到数据集1的每条同ID记录中,最终生成目标新数据集dataset1_new。
方法二:DATA步MERGE合并(需按ID排序)
如果两个数据集已经按ID字段排序,使用DATA步合并会更高效:
/* 若数据集未排序,先执行排序步骤(已排序可跳过) */ PROC SORT DATA=dataset1; BY ID; RUN; PROC SORT DATA=dataset2; BY ID; RUN; DATA dataset1_new; MERGE dataset1 dataset2; BY ID; RUN;
说明
利用MERGE语句按ID合并两个数据集,由于数据集2中每个ID仅存在一条记录,合并后数据集1的每条同ID记录都会自动继承对应ID的num值。
内容的提问来源于stack exchange,提问作者user352188
相关产品推荐
相关产品推荐

