前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言中交集,并集,补集,差集的方法

R语言中交集,并集,补集,差集的方法

作者头像
邓飞
发布于 2022-12-13 09:05:07
发布于 2022-12-13 09:05:07
3K00
代码可运行
举报
运行总次数:0
代码可运行

‍大家好,我是飞哥。

R语言中计算交集、并集、并集、差集,这些数学概念,这里汇总一下。包括向量的操作和数据框的操作。可以说是非常全面了。

首先,模拟一下数据:a为1-10的数,b为5-15的数。

这里,推荐dplyr中的函数,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
a = 1:10
b = 5:15

a
b

1. 向量

1. 1 交集(intersect)

R中的函数为:intersect示例图:黄色线的区域,就是目标区域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 交集
intersect(a,b)

1.2 交集(union)

R中的函数为:union示例图:黄色线的区域,就是目标区域

在这里插入图片描述

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 并集
union(a,b)

1.3 补集

R中的函数为:setdiff示例图:黄色线的区域,就是目标区域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 补集
setdiff(a,b)
setdiff(b,a)

a与b的补集:

b与a的补集:

2. 数据框

构建两个数据框:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(123)
d1 = data.frame(ID = 1:10,y1 = rnorm(10))
d2 = data.frame(ID = 5:15,y2 =  rnorm(11))

d1
d2

2.1 交集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inner_join(d1,d2,by="ID")

2.2 并集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
full_join(d1,d2,by="ID")

2.3 以d1为准合并

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
left_join(d1,d2,by="ID")

2.4 以d2为准合并

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
right_join(d1,d2,by="ID")

2.5 在d1中去除d2的ID

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
anti_join(d1,d2,by="ID")

2.6 在d1中提取d2的ID

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
semi_join(d1,d2,by="ID")

3. 测试数据及代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = 1:10
b = 5:15

a
b

# 交集
intersect(a,b)

# 并集
union(a,b)

# 补集
setdiff(a,b)
setdiff(b,a)


# 数据框
set.seed(123)
d1 = data.frame(ID = 1:10,y1 = rnorm(10))
d2 = data.frame(ID = 5:15,y2 =  rnorm(11))

d1
d2

## 交集
inner_join(d1,d2,by="ID")

## 并集
full_join(d1,d2,by="ID")


## 以左边数据为准,进行合并
left_join(d1,d2,by="ID")


## 以右边边数据为准,进行合并
right_join(d1,d2,by="ID")

## 在d1中去除d2的ID
anti_join(d1,d2,by="ID")

## 在d1中提取d2的ID
semi_join(d1,d2,by="ID")

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 育种数据分析之放飞自我 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
部署是将服务的某个版本投入生产环境的过程。部署的总体目标是:对系统用户产生最小影响的情况下,把服务的升级版本投放到生产环境中。
憧憬博客
2020/07/21
2.5K0
企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
流量大了就加机器?太 Low 了!负载均衡的这些高级玩法,让你部署、测试、安全一步到位!
咱们做开发的,特别是刚开始接触后端服务的同学,可能经常遇到这样的场景:用户量一上来,应用响应变慢甚至卡死,老板在后面催,用户在群里骂,咋办?最直接的想法是不是“加机器”?没错,加机器是能解决一部分问题,但这就像头痛医头脚痛医脚,不够优雅,成本也高。
老码小张
2025/04/29
1310
流量大了就加机器?太 Low 了!负载均衡的这些高级玩法,让你部署、测试、安全一步到位!
基于 Traefik 的加权灰度发布
众所周知,Traefik 是云原生生态中的一个爆款的反向代理和负载均衡器。我们无论如何定义、赞美它都不为过。毫无疑问,基于传统的反向代理组件而言,真正使 Traefik 与 Nginx,Haproxy 最为关键的不同之处在于其“开箱即用”的功能,即它的自适应和动态可配置性。不仅如此,相比较而言,Traefik 最为核心的部分可能是它做自动服务发现、灰度发布等能力。
Luga Lee
2021/11/19
1.8K1
基于 Traefik 的加权灰度发布
灰度发布实现及蓝绿发布
随着公司业务的不断发展壮大,需要一套稳妥的发布方案,如果发布的新版本服务有问题能及时撤回,不至于造成太大范围的影响;
iginkgo18
2021/08/08
1.6K0
蓝绿部署、A/B测试以及灰度发布
过去的10年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用。在有关于“微服务”、“DevOps”、“Cloud-native”的讨论中,蓝绿部署、A/B测试、灰度发布,这三种部署方式往往同时出镜。 那么问题来了,蓝绿部署、A/B测试、灰度发布,这三者之间究竟有何不同? 蓝绿部署 Martin Flower曾在文章中阐述了蓝绿部署的整体要点,建议大家看看。 基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服
Rainbond开源
2018/05/31
2.4K0
微服务部署之蓝绿发布、滚动发布、灰度发布区别与特点
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。目前有很多部署发布的技术, 这儿将常见的做一个总结。
周辰晨
2021/08/24
1.8K0
微服务部署之蓝绿发布、滚动发布、灰度发布区别与特点
大规模微服务场景下灰度发布与流量染色实践
本文内容选自中国DevOps社区年会 · 2019年会,刘超老师分享的《大规模微服务场景下灰度发布与流量染色实践》实录。
kirito-moe
2019/12/17
8.2K0
大规模微服务场景下灰度发布与流量染色实践
关于灰度发布
几个月前部门内容组织了一次系统设计的议题,分到我们头上的题目是设计一套灰度发布系统。嗯,然后我们就精心设计(参考公司现有系统)了一番,不过鉴于滴滴现在大部分的人都是百度来的(误,所以这种系统大概也都是差不多的思路实现而来的。所以感觉应该算是一种通用系统吧~
iTesting
2019/11/01
2.3K0
小红书在容器环境的 CD 实践
腾讯云开发者社区
2017/10/23
4.3K0
小红书在容器环境的 CD 实践
首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布
根据2018年的DevOps发展报告来看,目前的DevOps发展速度非常之快,已经逐渐成为企业运维的标准方案.DevOps的核心就是敏捷和高效,敏捷和Scrum开发技术曾被认为是最好的技术. 既然公司用到了CI/CD肯定就肯定避免不了持续部署,所以我们就需要考虑一套适合我们的发布方式,这个时候我们就需要了解一下这几个发布方式到底是什么意思,有很么好处,他们之间的差别在哪个地方.
张琳兮
2019/01/24
2.5K0
互金平台灰度发布的三段式探索与实践【转载】
小亚,互联网金融公司应用运维主管,参与运维工作九年,涉及领域包含航空、金融、广告等。近两年主要负责金融业务运维的线上业务发布、维护等工作。
保持热爱奔赴山海
2019/09/17
9120
互金平台灰度发布的三段式探索与实践【转载】
怎样才是真正的灰度发布?
究竟什么才是灰度发布其实并没有一个严格的标准,因为这个东西不是黑的也不是白的是个中间过渡地带,这类的东西定义都会比较麻烦。由于工作的原因看到好多友商所谓的灰度发布产品,有意思的是他们实现的是完全不一样的功能,对外都说自己是灰度发布。我看到的有三种:
Oilbeater
2020/04/22
9350
API管理的正确姿势--API Gateway
数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离开来分别呈现。微服务对于传统单体架构的优势之一就在于,服务的拆分带来了更新、部署、管理的隔离性,让一些单独的服务可以进行创新和实验。从而支撑了用户体验的不断升级,为实现企业数字化转型的过程,提供了技术架构层面的支撑。
yuanyi928
2018/07/26
4K0
API管理的正确姿势--API Gateway
「全栈之路」Web前端开发的后端指南
在若干次前的一场面试,面试官看我做过 python爬虫/后端 的工作,顺带问了我些后端相关的问题:你觉得什么是后端?
前端劝退师
2019/09/17
1.4K0
「全栈之路」Web前端开发的后端指南
阿里P9架构师简述从单机至亿级流量大型网站系统架构的演进过程
阶段一、单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据,如mysql、sqlserver、oracle,然后通过JDBC进行数据库的连接和操作。 把以上的所有软件都装载同一台机器上,应用跑起来了,也算是一
Java架构
2018/05/04
1.4K0
阿里P9架构师简述从单机至亿级流量大型网站系统架构的演进过程
面试官:说说微服务灰度发布的底层实现?
微服务中的灰度发布(又称为金丝雀发布)是一种持续部署策略,它允许在正式环境的小部分用户群体上先部署新版本的应用程序或服务,而不是一次性对所有用户同时发布全新的版本。
磊哥
2024/03/06
6000
小红书在 Kubernetes 容器环境的CD实践
前言 容器推出以来,给软件开发带来了极具传染性的振奋和创新,并获得了来自各个行业、各个领域的巨大的支持——从大企业到初创公司,从研发到各类IT人员等等。跨境知名电商小红书随着业务的铺开,线上部署单元的
DevOps时代
2018/02/02
1.6K0
小红书在 Kubernetes 容器环境的CD实践
有赞灰度发布与蓝绿发布实践
近几年,随着有赞用户的迅速增长和业务的快速发展,对业务开发人员要求越来越高,一方面要求为用户提供稳定的服务,一方面要求进行快速业务迭代。然而,随着公司业务复杂度和服务化整体规模的增长,单个业务功能涉及的微服务接口数、服务化调用链路长度都在迅速增加,业务的回归测试越来越难以覆盖到所有的调用链路和业务逻辑,通过仅在测试环境进行业务测试的方式来保证系统稳定性的难度越来越高。
有赞coder
2020/08/24
2K0
有赞灰度发布与蓝绿发布实践
代码上线方案走过的历史
IDC正式上线的过程对于JAVA程序,可以是AB组分组上线的思路,即平滑下线一半的服务器,然后发布更新代码,重启测试,无问题后,挂上更新后的服务器,同时再平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后,重启,挂上线)
BUG弄潮儿
2021/04/26
8430
蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别
在有关微服务、DevOps、Cloud-native、系统部署等的讨论中,蓝绿部署、A/B 测试、灰度发布、滚动发布、红黑部署等概念经常被提到,它们有什么区别呢?通过搜索相关资料,做一个简单的辨析,如下: 一、蓝绿部署(Blue/Green Deployment) 过去的 10 年里,很多公司都在使用蓝绿部署(发布)来实现热部署,这种部署方式具有安全、可靠的特点。蓝绿部署虽然算不上“ Sliver Bullet”,但确实很实用。 蓝绿部署是最常见的一种0 downtime部署的方式,是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。蓝绿部署原理上很简单,就是通过冗余来解决问题。通常生产环境需要两组配置(蓝绿配置),一组是active的生产环境的配置(绿配置),一组是inactive的配置(蓝绿配置)。用户访问的时候,只会让用户访问active的服务器集群。在绿色环境(active)运行当前生产环境中的应用,也就是旧版本应用version1。当你想要升级到version2 ,在蓝色环境(inactive)中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。随后需要监测新版本应用,也就是version2 是否有故障和异常。如果运行良好,就可以删除version1 使用的资源。如果运行出现了问题,可以通过负载均衡器指向快速回滚到绿色环境。 蓝绿部署的优点: 这种方式的好处在你可以始终很放心的去部署inactive环境,如果出错并不影响生产环境的服务,如果切换后出现问题,也可以在非常短的时间内把再做一次切换,就完成了回滚。而且同时在线的只有一个版本。蓝绿部署无需停机,并且风险较小。 (1) 部署版本1的应用(一开始的状态),所有外部请求的流量都打到这个版本上。 (2) 部署版本2的应用,版本2的代码与版本1不同(新功能、Bug修复等)。 (3) 将流量从版本1切换到版本2。 (4) 如版本2测试正常,就删除版本1正在使用的资源(例如实例),从此正式用版本2。 从过程不难发现,在部署的过程中,应用始终在线。并且,新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响。这样风险很小,并且,只要老版本的资源不被删除,理论上,可以在任何时间回滚到老版本。 蓝绿部署的弱点: 使用蓝绿部署需要注意的一些细节包括: 1、当切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果数据库后端无法处理,会是一个比较麻烦的问题。 2、有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止; 3、需要提前考虑数据库与应用部署同步迁移/回滚的问题。 4、蓝绿部署需要有基础设施支持。 5、在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。 6、另外,这种方式不好的地方还在于冗余产生的额外维护、配置的成本,以及服务器本身运行的开销。 蓝绿部署适用的场景: 1、不停止老版本,额外搞一套新版本,等测试发现新版本OK后,删除老版本。 2、蓝绿发布是一种用于升级与更新的发布策略,部署的最小维度是容器,而发布的最小维度是应用。 3、蓝绿发布对于增量升级有比较好的支持,但是对于涉及数据表结构变更等等不可逆转的升级,并不完全合适用蓝绿发布来实现,需要结合一些业务的逻辑以及数据迁移与回滚的策略才可以完全满足需求。
孙杰
2019/10/29
8.2K0
推荐阅读
相关推荐
企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档