最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

比較 merge by 與 proc sql 的外連接(一)

2021-08-31 00:12 作者:陸震同學(xué)  | 我要投稿

回來得比較晚。我們講個內(nèi)容少點的 topic --- merge by 與 proc sql 外連接的比較之左連接。

為了讓大家時刻對外連接不迷糊,咱們約定一下,以后外連接,咱們統(tǒng)一叫成外連接橫向匹配合并。如此一來,我相信,你不會有突然對外連接感到陌生的時刻。

外連接橫向匹配合并,即左連接、右連接及全連接橫向匹配合并。時間緊張,我們今天先講第一部分---左連接橫向匹配合并。

先上二者的“完全等效” code(之所以打引號,后面會解釋):

準(zhǔn)備數(shù)據(jù)集

Data A;
? ?Input ID Name$ Height;
? ?cards;
1 A 1
3 B 2
5 C 2
7 D 2
9 E 2
? ?;
run;
Data B;
? ?Input ID Name$ Weight;
? ?cards;
2 A 2
4 B 3
5 C 4
7 D 5
? ?;
run;

左連接橫向匹配合并

一句話,以左側(cè)數(shù)據(jù)集中某一(些)變量作為 key variable(s) 進(jìn)行數(shù)據(jù)集間的橫向連接,輸出數(shù)據(jù)集中 key variable(s) 的取值跟著左側(cè)數(shù)據(jù)集的對應(yīng)變量的取值走。

proc sql

PROC SQL;
? ?Create table dummy as
? ?Select * from A as x left join B as y
? ? ? ?On x.ID= y.ID;
Quit;

坦白來講,同時給我 merge by 和 proc sql,我會選 sql。上面的輸出數(shù)據(jù)集是沒問題的,以 A 中 id 作為 left join 的 key variable,同時搜索 B 中有相同 id 取值的行,進(jìn)行左連接橫向匹配合并。A 中無 weight 變量,故 A 的部分觀測的 weight 為缺失。

merge by

Data dummy; ? ? ? ?
? ?Merge A(IN= X) B(IN= Y);
? ?by ID;
? ?If X;
run;
proc print; run;

輸出數(shù)據(jù)集完全一樣,從結(jié)果上來看,二者等效。

細(xì)節(jié)

然而,你留意看 SAS log 的話,proc sql 會有這樣的 warning,而 merge by 就不會有這個 warning。

這提示你兩種 code 雖然結(jié)果一樣,但是邏輯并不完全等價:

注意,merge by 是針對 by vairable(s) 進(jìn)行左連接橫向匹配合并。什么意思?merge by 是在兩個數(shù)據(jù)集 by vairable(s) 的全部值的組合列表上進(jìn)行連接,以數(shù)據(jù)集選項 in 控制左連接 or 右連接 or 全連接 or 內(nèi)連接。

今天只能寫到這了,我們后面再講這個對比系列。

比較 merge by 與 proc sql 的外連接(一)的評論 (共 條)

分享到微博請遵守國家法律
巧家县| 延长县| 沽源县| 洛川县| 南木林县| 琼结县| 达尔| 旬邑县| 马尔康县| 灵宝市| 五原县| 太仆寺旗| 晋州市| 金平| 兴义市| 安阳市| 余江县| 洪泽县| 汉沽区| 景洪市| 绥中县| 棋牌| 叙永县| 泊头市| 习水县| 临泉县| 长沙市| 赞皇县| 望城县| 岑巩县| 孝义市| 郴州市| 彩票| 大名县| 南漳县| 舟山市| 襄垣县| 东乡县| 贞丰县| 卓尼县| 昔阳县|