我有两个以下结构的数据集
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之间的唯一关系是它们以相同的方式排序。所以两个最低点应该匹配,依此类推。
答案 0 :(得分:2)
您想要一对一合并。
文档为here
为了进行一对一合并,您只需要合并而不需要by statement
这种类型的合并只是根据行号来匹配观察结果,所以要小心,如果你错过了一个你认为有的行或其他不符合预期的行,它可能会给你意想不到的结果。
例如:
proc sort data = have1; run;
proc sort data = have2; run;
data want;
merge have1 have2;
run;