0
点赞
收藏
分享

微信扫一扫

R语言中交集,并集,补集,差集的方法:向量和数据框


交集、并集、补集、差集,这些在R语言中如何实现呢,这篇博客介绍一下。

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

这里,推荐dplyr中的函数,

library(dplyr)
a = 1:10
b = 5:15

a
b

R语言中交集,并集,补集,差集的方法:向量和数据框_测试数据

1. 向量

1. 1 交集(intersect)

R中的函数为:​​intersect​

示例图:黄色线的区域,就是目标区域

R语言中交集,并集,补集,差集的方法:向量和数据框_r语言_02

# 交集
intersect(a,b)

R语言中交集,并集,补集,差集的方法:向量和数据框_数据_03

1.2 交集(union)

R中的函数为:​​union​

示例图:黄色线的区域,就是目标区域

R语言中交集,并集,补集,差集的方法:向量和数据框_并集_04

# 并集
union(a,b)

R语言中交集,并集,补集,差集的方法:向量和数据框_开发语言_05

1.3 补集

R中的函数为:​​setdiff​

示例图:黄色线的区域,就是目标区域

R语言中交集,并集,补集,差集的方法:向量和数据框_数据_06

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

a与b的补集:

R语言中交集,并集,补集,差集的方法:向量和数据框_并集_07

b与a的补集:

R语言中交集,并集,补集,差集的方法:向量和数据框_开发语言_08

2. 数据框

构建两个数据框:

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

d1
d2

R语言中交集,并集,补集,差集的方法:向量和数据框_测试数据_09

2.1 交集

inner_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_测试数据_10

2.2 并集

full_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_r语言_11

2.3 以d1为准合并

left_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_并集_12

2.4 以d2为准合并

right_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_并集_13

2.5 在d1中去除d2的ID

anti_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_数据_14

2.6 在d1中提取d2的ID

semi_join(d1,d2,by="ID")

R语言中交集,并集,补集,差集的方法:向量和数据框_并集_15

3. 测试数据及代码

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")



举报

相关推荐

0 条评论