使用R中merge()函数合并数据[通俗易懂]

使用R中merge()函数合并数据[通俗易懂]使用R中merge()函数合并数据在R中可以使用merge()函数去合并数据框,其强大之处在于在两个不同的数据框中标识共同的列或行。如何使用merge()获取数据集中交叉部分merge()最简单的形式为获取两个不同数据框中交叉部分。举例,获取cold.states和large.states完全匹配的数据。代码如下:>merge(cold.states,large….

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

使用R中merge()函数合并数据

在R中可以使用merge()函数去合并数据框,其强大之处在于在两个不同的数据框中标识共同的列或行。

如何使用merge()获取数据集中交叉部分

merge()最简单的形式为获取两个不同数据框中交叉部分。举例,获取cold.states和large.states完全匹配的数据。代码如下:

> merge(cold.states, large.states)
   Name Frost  Area
1  Alaska  152 566432
2 Colorado  166 103766
3 Montana  155 145587
4  Nevada  188 109889

如果你属性数据库语法SQL,你可能想merge()和数据库中JOIN功能很相似。确实如此,merge()函数的不同参数可以实现内join,left join,right join以及完整join。

merge()函数有很多参数,看起来非常吓人。但他们都几中类型参数有关:

  • x: 第一个数据框.

  • y: 第二个数据框.

  • by, by.x, by.y: 指定两个数据框中匹配列名称。缺省使用两个数据框中相同列名称。

  • all, all.x, all.y: 指定合并类型的逻辑值。缺省为false,all=FALSE (仅返回匹配的行).

最后一组参数all, all.x, all.y需要进一步解释,决定合并类型。

这里写图片描述

如何理解不同类型的合并

merge() 函数支持4种类型数据合并:

Natural join: 仅返回两数据框中匹配的数据框行,参数为:all=FALSE.

Full outer join: 返回两数据框中所有行, 参数为: all=TRUE.

Left outer join: 返回x数据框中所有行以及和y数据框中匹配的行,参数为: all.x=TRUE.

Right outer join: 返回y数据框中所有行以及和x数据框匹配的行,参数为: all.y=TRUE.

如何实现完整合并(full outer join)

返回示例数据中美国的州,执行完整合并cold和large state,使用参数all=TRUE.

> merge(cold.states, large.states, all=TRUE)
      Name Frost  Area
1     Alaska  152 566432
2    Arizona  NA 113417
3   California  NA 156361
....
13     Texas  NA 262134
14    Vermont  168   NA
15    Wyoming  173   NA

两个数据框有不同的名称,所以R基于两者state的name进行匹配。Frost来自cold.states数据框,Area来自large.states.

上面代码执行了完整合并,填充未匹配列值为NA。

总结

本文详细介绍R中merge()函数参数及合并数据类型。利用sql的表连接概念进行类比,简单易懂。

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

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

(0)
上一篇 2022年6月14日 下午12:36
下一篇 2022年6月14日 下午12:46


相关推荐

  • 安装epel源

    安装epel源转自 http laibulai iteye com blog 来自余洪春老师 构建高可用 linux 服务器 nbsp 简单记录一下 加强记忆 nbsp 安装 epel 源的好处就是 epel 这个项目是由 fedora 维护的 在维护的这个源中包含许多软件 包括 ntop nagios 之类的 也就是说 你安装了 epel 源就可以直接用 yuminstallnt 来安

    2026年3月18日
    2
  • mysql批量添加数据sql语句_sql insert into 批量

    mysql批量添加数据sql语句_sql insert into 批量在MySQL数据库中,如果要插入上百万级的记录,用普通的insertinto来操作非常不现实,速度慢人力成本高,推荐使用LoadData或存储过程来导入数据,我总结了一些方法分享如下,主要基于MyISAM和InnoDB引擎。1InnoDB存储引擎首先创建数据表(可选),如果有了略过:1>CREATEDATABASEecommerce;2>USEecommerce;3&…

    2022年10月5日
    11
  • NSGA2算法原理及python实现

    NSGA2算法原理及python实现#ProgramName:NSGA-II.py#Description:ThisisapythonimplementationofProf.KalyanmoyDeb’spopularNSGA-IIalgorithm#Author:HarisAliKhan#Supervisor:Prof.ManojKumarTiwari#Importingrequiredmodulesimportmathimportrandomimport…

    2022年5月12日
    39
  • 网站防止攻击

    网站防止攻击1、什么是XSSXSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTM

    2022年7月20日
    21
  • 矩阵转置行列式的运算规律

    矩阵转置行列式的运算规律nbsp

    2026年3月18日
    3
  • 只需 5 分钟,手把手教会你在 Docker 和 Kubernetes 中进行应用发布!

    只需 5 分钟,手把手教会你在 Docker 和 Kubernetes 中进行应用发布!公众号关注 奇妙的 Linux 世界 设为 星标 每天带你玩转 Linux 看完本文希望读者能够了解到 Docker 的基本原理 Kubernetes 是怎么工作的 对于前端 K

    2025年8月21日
    4

发表回复

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

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