美文网首页R语言探索
R语言数据表匹配和拼接-merge函数

R语言数据表匹配和拼接-merge函数

作者: 付德刚Q | 来源:发表于2018-01-12 23:12 被阅读4005次

    R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。

    merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)

    x,y:用于合并的两个数据框

    by,by.x,by.y:用于连接两个数据集的列,intersect(a,b)值向量a,b的交集,names(x)指提取数据集x的列名 by = intersect(names(x), names(y)) 是获取数据集x,y的列名后,提取其公共列名,作为两个数据集的连接列, 当有多个公共列时,需用下标指出公共列,如names(x)[1],指定x数据集的第1列作为公共列 也可以直接写为 by = ‘公共列名’ ,前提是两个数据集中都有该列名,并且大小写完全一致,R语言区分大小写

    all,all.x,all.y:指定x和y的行是否应该全在输出文件.

    sort:by指定的列是否要排序.

    suffixes:指定除by外相同列名的后缀.

    incomparables:指定by中哪些单元不进行合并.

    merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式。all=T代表全连接,all.x=T代表左联结;all.y=T代表右连接

    inner 模式匹配,只显示两个数据集公共列中均有的行

    # 有多个公共列时,需指出使用哪一列作为连接列merge(x,y,by=intersect(names(x)[1],names(y)[1]))

    # 当两个数据集连接列名称同时,直接用by.x,by.y 指定连接列merge(x,y,by.x ='name',by.y ='name') 

    # 当两个数据集均有连接列时,直接指定连接列的名称merge(x,y,by='name')

    outer 模式,将两张表的数据汇总,表中原来没有的数据置为空

    merge(x, y, all=TRUE, sort=TRUE)

    # all = TRUE 表示选取x, y 数据集的所有行,sort = TRUE,表示按 by 列进行排序,默认升序

    left 匹配模式

    merge(x ,y,all.x=TRUE,sort=TRUE)

    # 多个公共列 末指定连接列 ,左连接,设置 all.x = TRUE,结果只显示数据x的列及x在y数据集中没有的列

    merge(x, y, by = 'name',all.x = TRUE, sort = TRUE) # 多个公共列 指定连接列指, 左连接,设置 all.x = TRUE,结果只显示x所有names(x)[1]值

    right 匹配模式

    merge(x ,y ,by='name',all.y=TRUE,sort=TRUE) 

    # 多个公共列指定连接列# 左连接,设置all.y =TRUE,结果只显示y所有names(y) [1] 值的记录

    相关文章

      网友评论

        本文标题:R语言数据表匹配和拼接-merge函数

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