merge函数_merge函数

merge函数_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”),inco…

大家好,又见面了,我是你们的朋友全栈君。

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] 值的记录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据库基础知识_MySQL数据库的特点

    MySQL数据库基础知识_MySQL数据库的特点了解mysqlmysql是一个关系型数据库:以库、表、行、列这种关系模型组织数据Mysql使用时的注意事项每日一条数据库操作语句都应该以分号;结尾,因为mysql支持换行操作mysql数据库对大小写不敏感,大小写皆可,通常关键字使用大写表示mysql数据库中哭的名称应该以英文字符或者一些符号起始,但是不允许以数字起始mysql数据库中哭的名称、表的名称、字段的名称都不能使用mysql关键字,比如create、database;如果非要使用,那就用反引号括起来库的操作查看mysql

    2022年8月20日
    7
  • java抽象类和抽象方法[通俗易懂]

    java抽象类和抽象方法[通俗易懂]1.抽象的概念2.抽象类和抽象方法的使用1//抽象方法和抽象类的格式:2/*抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;3抽象类:抽象方法所在的类,必须是抽象

    2022年7月3日
    27
  • RabbitMQ消费消息坑:failed to convert serialized Message content

    RabbitMQ消费消息坑:failed to convert serialized Message content文章目录一、问题描述二、解决方案方案一:共同使用一个对象方案二:消息JSON序列化(推荐)2.1.生产者发送消息JSON序列化2.2.消费者接收消息JSON反序列化三、测试一、问题描述2022-05-0314:01:40.630WARN16876—[ntContainer#0-2]s.a.r.l.ConditionalRejectingErrorHandler:ExecutionofRabbitmessagelistenerfailed.org.springfram

    2022年6月16日
    633
  • Ubuntu20.04安装JDK「建议收藏」

    Ubuntu20.04安装JDK「建议收藏」JavaJDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracleJDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。版本:方法一:安装openjdk1、更新软件包列表:sudoapt-getupdate2、安装openjdk-14-jdk:sudoapt-getinstallopenjdk-14-jdk3、查看java版本,看看是否安装成功:java-ve

    2022年7月12日
    13
  • PHP中如何使用Redis接管文件存储Session详解

    PHP中如何使用Redis接管文件存储Session详解

    2021年11月4日
    47
  • Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)[通俗易懂]

    Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)[通俗易懂]在Java接受前端传过来的数据信息的时候,使用List<List<double>>进行接收结果出现这个错误java.lang.Integercannotbecasttojava.lang.Double是类型转换出现的错误,当是这个数据在前端明明处理过,使用parseFloat转为了浮点数后端使用List<List>进行接收,此时也没有报错于是打开debug进行调试检查问题,发现传过来的数值如果是整数则为Integer类型,有小数的才是double类型

    2022年7月16日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号