我有兩個dataset
數據1和數據2在SAS合併的工作(與IN =)
data data1;
input sn id $;
datalines;
1 a
2 a
3 a
;
run;
data data2;
input id $ sales x $;
datalines;
a 10 x
a 20 y
a 30 z
a 40 q
;
run;
我從下面的代碼將它們合併:
data join;
merge data1(in=a) data2(in=b);
by id;
if a and b;
run;
結果:(我期待一個內加入的結果並非如此)
1 a 10 x
2 a 20 y
2 a 30 z
2 a 40 w
結果來自proc sql
內部連接。
proc sql;
select data1.id,sn,sales,x from data2 inner join data1 on data1.hh_id;
quit;
結果:(從內有望加入)
a 1 10 x
a 1 20 y
a 1 30 z
a 1 40 w
a 2 10 x
a 2 20 y
a 2 30 z
a 2 40 w
b 3 10 x
b 3 20 y
b 3 30 z
b 3 40 w
我想知道概念和STEP BY在SAS STEP工作的merge
語句In=
和上述證明結果。
PS:我已閱讀this,和它說
一個明顯的使用了這些變量是控制 會發生什麼樣的「合併」,用if語句。例如,如果 ThisRecordIsFromYourData和ThisRecordIsFromOtherData;將使SAS 僅包含與來自兩個輸入數據 集(如內連接)的變量相匹配的行。
我猜,(像一個Inner Join)並非總是如此。
我相信這是導致問題而非IN或其他任何問題的多對多連接。 – Reeza