美文网首页
R语言的连接操作 merge join

R语言的连接操作 merge join

作者: 不会生信哟 | 来源:发表于2021-07-01 20:39 被阅读0次

杀杀
学习数据库的时候经常使用连接操作,在我们处理数据时经常需要对两个数据中某个关键字段进行数据合并,这时候我们可以使用R来实现

假设我们有两个表格,分别代表两批人的两类信息,其中有些人是重复出现在两个表格中的,我们需要同时得到两批信息,因此我们需要将这两个表格按照人名来合并
merge(table_m,table_s,by = "name")

此时取出了两个矩阵中name字段相同的行进行了合并

如果第一个矩阵中所有的人,并把第二个矩阵中相同人的信息加入,需要用到left和right join

left_join(table_m,table_s,by = "name")
相反rightjoin则是保留第二个参数表格的所有人,当然你还是使用leftjoin,但是调换这两个参数的位置,也是一样的,只是有略微的不同,就是两个参数中,前面那个的矩阵也会保持在前面,即使你用的是rightjoin,保留了后一个矩阵的参数,但是前一个矩阵的信息还是先被拼接

还有就是保留两个矩阵的所有关键字段的人

full_join(table_m,table_s,by = "name")

当然还有求差集,也就是说两个表格中另一个表格没有的(第一个参数的表格特有的)

anti_join(table_m,table_s,by = "name")

当然有同学会说为什么不用intersect或者match或者which

这是因为有时候有的表格是这样的
关键字段有重复值,这时候如果使用match就会只返回第一个匹配的位置(处理数据的时候要小心这种情况,不要默认用match造成数据的丢失)

which就更麻烦了,要写循环一个一个去找,然后合并

intersect则是取交集,也取不出多个相同的,因此需要连接操作 直接就完成了 另外,根据多列合并数据,只需要加上by = c("字段1","字段2"),就可以按照多列合并 只有当两列同时相同时才会被选中

相关文章

网友评论

      本文标题:R语言的连接操作 merge join

      本文链接:https://www.haomeiwen.com/subject/pthsultx.html