举个例子,用by id 来一对多合并。
data a;
input id sex$ subject$ score;
cards;
1 m math 100
1 m chinese 99
2 m math 88
2 m chinese 76
;
run;
data b;
input id sex$ age;
cards;
1 f 13
2 f 12
;
run;
data all;
merge a b;
by id ;
run;
因为性别在两个数据集中都存在,应该是后一个数据集b中的性别覆盖掉a中的性别。又因为a中每个id又两条记录,所以b的结果应该重复两次。
我期望的结果是这样的:
id sex score age
1 f math 100 13
1 f chinese 99 13
2 f math 88 12
2 f chinese 76 12
实际的结果却是这样的
id sex score age
1 f math 100 13(第一条记录的性别被b中的覆盖)
1 m chinese 99 13(第二条记录中的性别没有被b覆盖,保留了a中原有的性别)
2 f math 88 12
2 m chinese 76 12
为什么会出现这种结果呢?分数是b中独有的变量,合并之后重复了两次没有问题。
但是性别作为在A中已经存在的变量,为什么一次被b覆盖,一次没有呢?如果想要两次都被B覆盖怎么办?