兩個dataframe數(shù)據(jù)之間的連接關(guān)系
經(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獨有的岩梳;默認是按照共有列進行連接
full_join
我認為從連接后的記錄數(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ù)“,當然缰猴,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獨有的記錄
其他語言也是一樣的理解胰舆!
作者:WortJohn
鏈接:http://www.reibang.com/p/bf02ace4ba5c