join函數(shù)
經(jīng)常會碰到需要把兩個數(shù)據(jù)進行合并,大的方向有按“列”和按"行"合并兩種方式墙贱,這里主要講下按“列”進行合并,如下圖贱傀,假設(shè)有a惨撇、b兩個數(shù)據(jù),注意共有的列是”chr"和“bin"府寒;值為1,2,3,4,5的bin是a魁衙、b共有的; 值為10,11,12的bin是a獨有的株搔;值為6,7,8,9的bin是b獨有的剖淀;默認(rèn)是按照共有列進行連接
full_join
我認(rèn)為從連接后的記錄數(shù)理解可能更好些,full_join連接后的記錄數(shù)等于”共有的記錄數(shù)+a獨有的記錄數(shù)+b獨有的記錄數(shù)“纤房,根據(jù)連接鍵纵隔,共有的記錄數(shù)為5,a獨有的記錄數(shù)為3炮姨,b獨有的記錄數(shù)為4巨朦,所以為12,結(jié)果可以理解為a剑令、b的并集
inner_join
inner_join連接后的記錄數(shù)等于”共有的記錄數(shù)“, 也就是5拄查,結(jié)果可以理解為a吁津、b的交集,R語言中的merge函數(shù)也可以實現(xiàn)
相信你已經(jīng)猜到left_join和right_join的記錄數(shù)是多少了
left_join
left_join連接后的記錄數(shù)等于”a的記錄數(shù)“堕扶,當(dāng)然碍脏,a是需要放在第一個參數(shù),這篇文章講的都是a作為連接函數(shù)的第一個參數(shù)值稍算,b作為連接函數(shù)的第二個參數(shù)值
right_join
right_join連接后的記錄數(shù)等于”b的記錄數(shù)“
其他連接
有些人可能看到過semi_join和anti_join連接典尾,semi_join連接其實是在inner_join的結(jié)果中只取屬于a的字段(也就是列)
而anti_join其實就是a獨有的記錄
其他語言也是一樣的理解!
merge函數(shù)
省略糊探。钾埂。河闰。
作者:WortJohn
鏈接:http://www.reibang.com/p/bf02ace4ba5c
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)褥紫,非商業(yè)轉(zhuǎn)載請注明出處姜性。