大家好,我是飞哥。
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")