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