交集、并集、补集、差集,这些在R语言中如何实现呢,这篇博客介绍一下。
首先,模拟一下数据:a为1-10的数,b为5-15的数。
这里,推荐dplyr中的函数,
library(dplyr)
a = 1:10
b = 5:15
a
b
R中的函数为:intersect
「示例图:黄色线的区域,就是目标区域」
# 交集
intersect(a,b)
R中的函数为:union
「示例图:黄色线的区域,就是目标区域」
在这里插入图片描述
# 并集
union(a,b)
R中的函数为:setdiff
「示例图:黄色线的区域,就是目标区域」
# 补集
setdiff(a,b)
setdiff(b,a)
a与b的补集:
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")
anti_join(d1,d2,by="ID")
semi_join(d1,d2,by="ID")
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")
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有