R语言 数据表匹配和拼接 merge函数的使用

 更新时间:2021年03月27日 17:11:33   作者:付德刚Q  
这篇文章主要介绍了R语言 数据表匹配和拼接 merge函数的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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语言subset和merge函数的使用

1、merge函数对数据框的操作

从两个数据框中选择出条件相等的行组合成一个新的数据框

df1=data.frame(name=c("aa","bb","cc"),age=c(20,29,30),sex=c("f","m","f"))
df2=data.frame(name=c("dd","bb","cc"),age=c(40,35,36),sex=c("f","m","f"))
mergedf=merge(df1,df2,by="name")

2、subset函数

从某一个数据框中选择出符合某条件的数据或是相关的列

(1)单条件查询

> selectresult=subset(df1,name=="aa")
> selectresult
 name age sex
1  aa 20  f
> df1
 name age sex
1  aa 20  f
2  bb 29  m
3  cc 30  f

(2)指定显示列

> selectresult=subset(df1,name=="aa",select=c(age,sex))
> selectresult
 age sex
1 20  f

(3)多条件查询

> selectresult=subset(df1,name=="aa" & sex=="f",select=c(age,sex))
> selectresult
 age sex
1 20  f
> df1
 name age sex
1  aa 20  f
2  bb 29  m
3  cc 30  f

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • R语言实现操作MySQL数据库

    R语言实现操作MySQL数据库

    这篇文章主要介绍了R语言实现操作MySQL数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 大数据分析R语言RStudio使用超详细教程

    大数据分析R语言RStudio使用超详细教程

    RStudio是用于R编程的开源工具,这篇文章主要介绍了大数据分析R语言RStudio使用教程和一些RStudio的重要技巧,窍门和快捷方式,可快速将您变成RStudio高级用户,感兴趣的朋友跟随小编一起看看吧
    2021-03-03
  • R语言绘图如何支持中文

    R语言绘图如何支持中文

    这篇文章主要介绍了R语言绘图如何支持中文,帮助大家更好的理解和学习使用R语言,感兴趣的朋友可以了解下
    2021-03-03
  • R语言导入导出数据的几种方法汇总

    R语言导入导出数据的几种方法汇总

    这篇文章主要给大家总结介绍了R语言导入导出数据的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言写2048游戏实例讲解

    R语言写2048游戏实例讲解

    这篇文章主要介绍了R语言写2048游戏实例讲解,文中将代码列举了出来,有感兴趣的同学可以学习下
    2021-03-03
  • R studio 批量注释的快捷方式

    R studio 批量注释的快捷方式

    这篇文章主要介绍了R studio 批量注释的快捷方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言中cbind、rbind和merge函数的使用与区别

    R语言中cbind、rbind和merge函数的使用与区别

    这篇文章主要介绍了R语言中cbind、rbind和merge函数的使用与区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言使用gganimate创建可视化动图

    R语言使用gganimate创建可视化动图

    这篇文章主要为大家介绍了R语言使用gganimate创建可视化动图的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • R语言如何画竖线、横线、添加标签以及画固定长度的线段

    R语言如何画竖线、横线、添加标签以及画固定长度的线段

    R语言绘图的能力非常强大,有时看似繁复的图形不过寥寥数行代码就搞定,下面这篇文章主要给大家介绍了关于R语言如何画竖线、横线、添加标签以及画固定长度的线段的相关资料,需要的朋友可以参考下
    2022-11-11
  • R语言之.rdata文件保存及加载的操作方法

    R语言之.rdata文件保存及加载的操作方法

    在 R 中,.rdata 文件是通过 save() 函数创建的,本文给大家介绍R语言之.rdata文件保存及加载的操作方法,感兴趣的朋友一起看看吧
    2025-04-04

最新评论