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

歡迎光臨散文網(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 的外連接(一)的評論 (共 條)

分享到微博請遵守國家法律
崇左市| 铁岭县| 榆社县| 和龙市| 邵阳市| 金寨县| 大田县| 定结县| 英德市| 南平市| 太原市| 宾阳县| 汤阴县| 锡林浩特市| 乌兰察布市| 盐城市| 白银市| 越西县| 瓦房店市| 淮安市| 申扎县| 霍山县| 金昌市| 金平| 无棣县| 邢台市| 探索| 项城市| 金秀| 万载县| 班戈县| 牙克石市| 科技| 广河县| 磐石市| 会泽县| 关岭| 昌图县| 澎湖县| 葫芦岛市| 清河县|