列组合了两个不同大小的数据集

时间:2014-04-02 14:43:26

标签: sas

我有两个以下结构的数据集

ID1   Cat1
1     a
2     a
3     b
5     b
5     b
6     c
7     d

ID2   Cat2
11    z
12    z
13    z
14    y
15    x

我想进行列组合,然后让不匹配的行丢失。所以我最终想要:

ID1   Cat1    ID2    Cat2
1     a       11     z
2     a       12     z
3     b       13     z 
4     b       14     y
5     b       15     x
6     c    
7     d          

这样做的目的是我有两个已排序的数据集(按ID),并希望将第一个类别(Cat1)与第二个类别(Cat2)进行匹配。第二类具有预定义数量的“时隙”,这些时隙应按ID的顺序进行匹配。 ID1和ID2之间的唯一关系是它们以相同的方式排序。所以两个最低点应该匹配,依此类推。

1 个答案:

答案 0 :(得分:2)

您想要一对一合并。

文档为here

为了进行一对一合并,您只需要合并而不需要by statement

这种类型的合并只是根据行号来匹配观察结果,所以要小心,如果你错过了一个你认为有的行或其他不符合预期的行,它可能会给你意想不到的结果。

例如:

proc sort data = have1; run;
proc sort data = have2; run;
data want;
   merge have1 have2;
run;