1. 函数功能

Merge two data frames by common columns or row names,
or do other versions of database join operations.

通过共同列或者行名合并数据框,或者执行其他合并操作

2.函数语法

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"), no.dups = TRUE,incomparables = NULL, ...)

3. 函数参数

1) x,y
x, y
data frames, or objects to be coerced to one.

要合并的数据框或者对象

2) by, by.x, by.y
by, by.x, by.y
specifications of the columns used for merging.

指定用于合并的列

By default the data frames are merged on the columns with names they both have,
but separate specifications of the columns can be given by by.x and by.y.
The rows in the two data frames that match on the specified columns are extracted, and joined together.
If there is more than one match, all possible matches contribute one row each.

默认两个数据框通过共同的列合并,也可通过参数by.x和by.y指定。满足指定列的行被提取出来,并合并到一起。
如果有多个匹配项,则所有可能的匹配项各贡献一行。

当两个数据框有相同的列名:

名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈')
性别 <- c('M','F','F','F','M','F')
亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心')
data <- data.frame(名称,性别,亲属,stringsAsFactors = F)
data名称 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师')
身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧')
武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指')
pd <- data.frame(名称,身份,武功,stringsAsFactors = F)
pd


当合并要用到的共同列在数据框中的列名称不同

#  merge()函数
名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈')
性别 <- c('M','F','F','F','M','F')
亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心')
data <- data.frame(名称,性别,亲属,stringsAsFactors = F)
data姓名 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师')
身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧')
武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指')
pd <- data.frame(姓名,身份,武功,stringsAsFactors = F)
pd


by.x和by.y实际上是用来告诉merge函数我们取出x(第一个数据框)的by.x列和y(第二个数据框)的by.y列中具有相同取值的行进行合并,其他的丢掉,另外如果指定了其中一个,那么另一个就必须同时指定,不然就报错;

3) all,all.x,all.y
all
logical; all = L is shorthand for all.x = L and all.y = L,
where L is either TRUE or FALSE.

逻辑值,
all=TRUE相当于all.x=TRUE&all.y=TRUE
all=FALSE相当于all.x=FALSE&all.y=FALSE

all.x
logical; if TRUE, then extra rows will be added to the output,
one for each row in x that has no matching row in y.
These rows will have NAs in those columns that are usually filled with values from y.
The default is FALSE, so that only rows with data from both x and y are included in the output.

all.x
逻辑值,若all.x=TRUE,则将在y中没有匹配的那些x数据也加入输出结果,y中没有的这些行将会产生NA值。默认是FALSE,只有x与y数据框均有的行会被包含在输出结果中。

all.y
logical; analogous to all.x.

逻辑值。与all.x类似

情况1:默认合并方式:取交集
# 默认合并方式:取交集
merge(data,pd,by.x = '名称',by.y = '姓名')
merge(data,pd,by.x = '名称',by.y = '姓名',all=FALSE)
merge(data,pd,by.x = '名称',by.y = '姓名',all.x=FALSE,all.y=FALSE)

情况2:all=TRUE,取并集
# all=TRUE,取并集
merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE)
merge(data,pd,by.x = '名称',by.y = '姓名',all.x=TRUE,all.y=TRUE)

情况3:all.x=TRUE,all.y=FALSE:取x的全集与匹配的y数据
merge(data,pd,by.x = '名称',by.y = '姓名',all.x=TRUE,all.y=FALSE)

情况4: all.x=FALSE,all.y=TRUE:取y数据框的全集与匹配的x数据框数据
merge(data,pd,by.x = '名称',by.y = '姓名',all.x=FALSE,all.y=TRUE)


总结四种合并方式如下:引用文章

4)sort函数:结果是否按照公共列排序
sort
logical. Should the result be sorted on the by columns?

逻辑值,结果是否按照公共列排序,默认TRUE:排序

merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE)
merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=FALSE)



5) suffixes:后缀,当合并后的x,y矩阵有相同的列名时,使用后缀表明出处,默认后缀为.x, .y
suffixes
a character vector of length 2 specifying the suffixes
to be used for making unique the names of columns in the result
which are not used for merging (appearing in by etc).

长度为2的字符串向量,指定用于使结果中不用于合并的列名保持唯一性的后缀。

#  merge()函数
名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈')
性别 <- c('M','F','F','F','M','F')
亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心')
武功 <- c('空明拳','兰花拂穴手','无','摧心掌','九阴白骨爪','逍遥游拳法')
data <- data.frame(名称,性别,亲属,武功,stringsAsFactors = F)
data姓名 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师')
身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧')
武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指')
pd <- data.frame(姓名,身份,武功,stringsAsFactors = F)
pd
merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE)
merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE,suffixes = c('.x','.y'))
merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE,suffixes = c('.data','.pd'))

默认后缀

修改后缀

6)no.dups
no.dups
logical indicating that suffixes are appended in more cases to
avoid duplicated column names in the result.
This was implicitly false before R version 3.5.0.

逻辑值:是否将参数suffixessuffixessuffixes扩展到更多情况下,以避免出现重复的列名

7) incomparables
incomparables
values which cannot be matched.
This is intended to be used for merging on one column,
so these are incomparable values of that column.
8) …
arguments to be passed to or from methods.

merge函数: Merge Two Data Frames

merge()函数--R语言相关推荐

  1. c r语言中rank函数,R语言rank函数详细解析

    R语言rank函数详细解析 发布于 2016-01-04 16:26:04 | 557 次阅读 | 评论: 0 | 来源: PHPERZ R 数据统计分析语言R是用于统计分析.绘图的语言和操作环境.R ...

  2. quantile函数r语言_R中的Quantile()函数-简要指南

    quantile函数r语言 You can generate the sample quantiles using the quantile() function in R. 您可以使用R中的Quan ...

  3. matlab 雷达图函数,R语言之可视化(20)ggradar雷达图

    目录 R语言之可视化(20)ggradar雷达图 ======================= ggradar是一个ggplot2函数,主要用于绘制数据分析的雷达图. 它基于Ricardo Bion ...

  4. c语言分组求和函数,R语言 实现data.frame 分组计数、求和等

    df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数 方法1: cnt = table(df$stratum) 方法2: cnt = tapply(df$ps ...

  5. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析

    R语言有很多包可以做机器学习(Machine Learning)的任务.机器学习的任务主要有有监督的学习方式和无监督的学习方式. 有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类 ...

  6. 自定义函数 | R语言偏相关分析及绘图

    R语言的偏相关分析过程 偏相关分析介绍 阶偏相关分析: 偏相关系数: Pearson相关系数 Spearman相关系数 Kendall等级相关系数 R语言实现偏相关分析 pcor() pcor.tes ...

  7. r 语言c函数,R语言常用函数详解

    R语言对于我们生信人员来讲,再熟悉不过,然而任何一门语言想要学好,必须经过常年的日积月累才可以做到,在这里,我列举R中常用的函数的用法, 供大家学习. 1.序列函数seq 用法: seq(form,t ...

  8. c 语言matrix函数,R语言矩阵matrix函数

    矩阵是元素布置成二维矩形布局的R对象. 它们包含相同原子类型的元素.尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处.我们使用的是在数学计算中含有数字元素矩阵. 使用 matrix() ...

  9. c语言apply函数,R语言apply()函数用法(示例代码)

    在R语言的帮助文档里,apply函数的功能是: Retruns a vector or array or list of values obtained by applying a function ...

  10. r语言 c d生产函数,R语言 函数与模型(12):随机前沿模型SFA

    ______________________________ ______________________________ 查看往期R语言与函数系列 _________________________ ...

最新文章

  1. python实现英文新闻摘要自动提取_用python机器学习实现新闻关键词的抽取
  2. android 非法字符 \ufeff错误
  3. 2019(dotNet全栈开发)公众号回顾
  4. 使用 Spring Validation 优雅地进行参数校验
  5. 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
  6. MYSQL 8.0 OCP
  7. 农村三资管理平台app_农村集体经济管理平台、“三资”信息公开手机APP招标公告...
  8. MatConvNet对自己的图片分两类及提取图片特征
  9. 显示搜索dota2协调服务器,搜索dota2游戏协调服务器中【操作方式】
  10. 【听课笔记】复旦大学遗传学_05染色体畸变
  11. VS2008SP1的MFC测试-Ribbon风格(DJ尐舞图形画板2008)
  12. 贪吃蛇c语言存档读档,刚学C语言,想写一个贪吃蛇的代码
  13. Hi3516A开发--板卡烧写
  14. 防火墙——防火墙基础知识
  15. 苹果浏览器(Safari浏览器)打开网页“不安全”警告的解决方案
  16. syncthing数据同步应用-docker部署
  17. 乐视网被冻结价值9000万财产 要贾跃亭以FF股权抵偿债务
  18. android6.0 全局4k,Android6.0全局4K大法好?索尼Z5P升级体验
  19. 2021-08-12 Android APP 保持屏幕常亮和取消屏幕常亮方法
  20. LTC3307AHV 符合EMI标准,降压转换器 QCA7005-AL33 PHY

热门文章

  1. IEEE 研究类型 小木虫
  2. C/C++ C# unity经常使用的一些快捷键
  3. Atitit 数据记录存储方式 索引组织表 堆组织表 储方式 InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。这种方式,我们称之为索引组织表(Index Organizi
  4. Atitit 知识管理 知识的存储与检索 目录 1. Mis4大信息系统 2 1.1. crm客户流 通讯录 2 1.2. 企业资源规划(ERP) 财务卡片系统 通讯录,canlenda实现 2
  5. Atitit nlp文本挖掘和自然语言处理方面,常用的算法总结 比如tf-idf 目录 1.1. tf:词频,是指某个词在某篇文章中出现的频率 2 1.2. 去停用词算法 2 1.3. idf。
  6. Atitit 企业6大职能 attilax总结
  7. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
  8. 都在学奈飞 高盛要玩数据订阅
  9. CTP:rust封装找不到thostmduserapi_se、thosttraderapi_se问题
  10. 眼镜蛇效应:事与愿违的经济学教训