|
一般来说,第二个数据集是用于更新(或者说覆盖)数据集1中的相同的观测,和合并dataset2的新变量到 dataset1。
以下示例显示了4种不同情况下的merge,1对1,1对多,多 对1,和多对多条观察合并。在数据集中s表示一,m为多.
Look carefully the data1 and data2 and result tables; you could get a better understanding of the merge.
data data1;
input a b b1 c1 $;
datalines;
1 101 101 s
2 201 201 s
3 401 401 m
3 501 501 m
4 401 401 m
4 501 501 m
5 511 511 m2
5 521 521 m2
6 601 601 m3
6 611 611 m3
6 621 621 m3
; run;
data data2;
input a b b2 c2 $;
datalines;
1 10002 10002 s
2 80002 80002 m
2 70002 70002 m
3 30002 30002 s
4 40002 40002 m
4 50002 50002 m
5 53002 53002 m3
5 53102 53102 m3
5 53202 53202 m3
6 64002 64002 m2
6 64102 64102 m2
; run;
data data1_data2;
merge data1 data2;
by a;
run;
data data2_data1;
merge data2 data1;
by a;
run;
data1-data2
Obs a b b1 c1 b2 c2
1 1 10002 101 s 10002 s
2 2 80002 201 s 80002 m
3 2 70002 201 s 70002 m
4 3 30002 401 m 30002 s
5 3 501 501 m 30002 s
6 4 40002 401 m 40002 m
7 4 50002 501 m 50002 m
8 5 53002 511 m2 53002 m3
9 5 53102 521 m2 53102 m3
10 5 53202 521 m2 53202 m3
11 6 64002 601 m3 64002 m2
12 6 64102 611 m3 64102 m2
13 6 621 621 m3 64102 m2
data2-data1
Obs a b b2 c2 b1 c1
1 1 101 10002 s 101 s
2 2 201 80002 m 201 s
3 2 70002 70002 m 201 s
4 3 401 30002 s 401 m
5 3 501 30002 s 501 m
6 4 401 40002 m 401 m
7 4 501 50002 m 501 m
8 5 511 53002 m3 511 m2
9 5 521 53102 m3 521 m2
10 5 53202 53202 m3 521 m2
11 6 601 64002 m2 601 m3
12 6 611 64102 m2 611 m3
13 6 621 64102 m2 621 m3
|