基于sas中的第二个数据集相交一个数据集

时间:2016-08-17 13:42:28

标签: sas

我有一个名为' 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
.
.

我不明白,我做错了什么。

1 个答案:

答案 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;