我有一个名为' primary_data '的数据集,如下所示:
Obs Id Month Name Salary
1 10006 JAN1926 name1 3273
2 10006 FEB1926 name1 7143
3 10007 JAN1926 name2 4274
4 10008 JAN1926 name3 2591
5 10008 FEB1926 name3 2394
6 10009 JAN1926 name4 4416
.
.
我还有另一个名为“选择”的数据集,如下所示:
Obs Id
1 10006
2 10008
.
.
注意: ID 在“选择”数据集中是唯一的
我需要使用 primary_data 的子集,其中 Id 来自“选择”数据集。我尝试合并,但我得到整个 primary_data 作为我的输出。
data merged_data;
merge primary_data selection;
by Id;
run;
在上面的示例中,我希望 merged_data 的条目对应 Id s:10006和10008,但不是来自Ids 10007和10009.即 merged_data 应如下所示:
Obs Id Month Name Salary
1 10006 JAN1926 name1 3273
2 10006 FEB1926 name1 7143
3 10008 JAN1926 name3 2591
4 10008 FEB1926 name3 2394
.
.
我不明白,我做错了什么。
答案 0 :(得分:4)
如果要使用datastep进行合并,则需要使用in table option
,因为您要使用inner join
。
e.g。在in2 variable
中,如果输出记录中使用了来自selection table
的记录,则您有信息:
data merged_data;
merge primary_data(in=in1) selection(in=in2);
by Id;
if in1 and in2; /* inner join */
run;