R语言入门-字段匹配(连接)-- merge

字段匹配,也称为横向合并,它会将元数据表中没有的但其他数据表中有的字段,通过共同的关键字段一一对应匹配值原数据表中,从而达到获取新字段的目的。它的前提是匹配合并的两张表必须具有共同的关键字段,并且数据类型必须一致。

1 数据导入

#数据导入
items = read.csv('C:/Users/ABC/Desktop/书籍源代码和配套资源/谁说菜鸟不会数据分析(R语言篇)--数据/第四章/4.5.3 字段匹配/商品名称.csv',
                fileEncoding="utf8",
                stringsAsFactors=FALSE)
prices = read.csv('C:/Users/ABC/Desktop/书籍源代码和配套资源/谁说菜鸟不会数据分析(R语言篇)--数据/第四章/4.5.3 字段匹配/商品价格.csv',
                 fileEncoding="utf8",
                 stringsAsFactors=FALSE)

观察数据:items表包含商品的代码(id)、评论数(comments)、(商品名称)title,共11行,其中最后一行用于验证不同连接方式的结果;prices表包含商品的代码(id)、过期定价(oldPrice)、当期价格(nowPrice),同理,最后一行用来验证不同连接方式的结果。

2 函数说明 

本文要实现的功能就是Excel的Vlookup函数,Excel中,通常适用Vlookup的精确匹配功能进行字段匹配

Excel-vlookup函数 精确匹配和模糊匹配的区别https://wenda.so.com/q/1465120588723449

而在R语言中,需要使用merge函数进行字段匹配

merge函数常用的参数如下:

merge(x,y,by.x,by.y,all=FALSE,all.x=all,all,y=all)
参数说明
x左边的数据框
y右边的数据框
by.x连接中使用左数据框的列名
by.y连接中使用右数据框的列名
all连接时是否保留两边数据框的所有记录,默认为FALSE,即只保留匹配列两两等的记录,为TRUE时保留所有记录
all.x

连接时是否保留左侧数据框的所有记录,为TRUE时保留,为FALSE时不保留,若不设置,则默认取参数为all的值

all.y连接时是否保留右侧数据框的所有记录,为TRUE时保留,为FALSE时不保留,若不设置,则默认取参数all的值

其中,通过设置all,all.x,all.y三个参数,可以对连接方式进行设置,总共有4种连接方法,分别为内连接、左连接、右连接和外连接,这与关系型数据库的连接方法是一样的。

3 内连接

#内连接
itemPrices = merge(items,prices,by.x='id',by.y='id')

 4 左连接

#左连接
itemPrices = merge(items,prices,by.x='id',by.y='id',all.x=TRUE)

  5 右边连接

#右连接
itemPrices = merge(items,prices,by.x='id',by.y='id',all.y=TRUE)

 6 外连接

#外连接
itemPrices = merge(items,prices,by.x='id',by.y='id',all.y=TRUE)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_trans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值