国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
扬中市| 南丹县| 岑溪市| 临城县| 米泉市| 华阴市| 双桥区| 宁乡县| 新密市| 泰州市| 富平县| 庆元县| 晋中市| 克拉玛依市| 邓州市| 犍为县| 万年县| 东辽县| 嘉峪关市| 稻城县| 武汉市| 四平市| 望城县| 昭觉县| 宝丰县| 双牌县| 梁河县| 玛纳斯县| 威海市| 浮梁县| 白河县| 额济纳旗| 屏东市| 阿瓦提县| 吉隆县| 正蓝旗| 阜阳市| 白玉县| 杂多县| 邵阳市| 溧阳市|