如何在R中使用intersect()函数(附例子)

2,760 阅读2分钟

你可以使用基础R中的intersect()函数来寻找两个对象的交集。

这个 "交集 "简单地表示两个对象有共同的元素。

这个函数使用以下基本语法。

intersect(object1, object2)

下面的例子展示了如何在向量和数据框中使用**intersect()**函数。

例1:在向量中使用intersect()函数

下面的代码显示了如何使用**intersect()**函数来寻找R中两个向量的交点。

#define two vectors
x <- c(1, 4, 5, 5, 9, 12, 19)
y <- c(1, 2, 5, 5, 10, 14, 19)

#find intersection between two vectors
intersect(x, y)

[1]  1  5 19

从输出中我们可以看到,向量x和y有三个共同的值:1519

请注意,intersect()函数也适用于字符向量。

#define two vectors
x <- c('A', 'B', 'C', 'D', 'E')
y <- c('C', 'D', 'E', 'F')

#find intersection between two vectors
intersect(x, y)

[1] "C" "D" "E"

从输出中我们可以看到,向量x和y有三个共同的字符串:CDE

请注意,两个向量的长度不一定相同,intersect()函数也可以工作。

例2:在数据框架中使用intersect()函数

为了找到两个数据框架的共同行,我们必须使用dplyr包中的intersect()函数。

下面的代码显示了如何使用这个函数来找到两个数据框架的共同行。

library(dplyr) 

#define two data frames
df1 <- data.frame(team=c('A', 'A', 'B', 'B'),
                  points=c(12, 20, 25, 19))

df1

  team points
1    A     12
2    A     20
3    B     25
4    B     19

df2 <- data.frame(team=c('A', 'A', 'B', 'C'),
                  points=c(12, 22, 25, 32))

df2

  team points
1    A     12
2    A     22
3    B     25
4    C     32

#find intersection between two data frames
dplyr::intersect(df1, df2)

  team points
1    A     12
2    B     25

从输出结果中我们可以看到,这两个数据框有两行是共同的。

请注意,这个intersect()函数只会返回两个数据框架之间每一列都有相同数值的行。

还需要注意的是,我们可以将length()函数与intersect()函数一起使用,以简单地找到两个数据框有共同的行数。

#find number of rows in common between the two data frames
length(dplyr::intersect(df1, df2))

[1] 2

从输出结果中我们可以看到,两个数据框有2行的共同点。

其他资源

下面的教程解释了如何使用R中的其他常用函数。

如何使用R中的dim()函数
如何使用R中的transform()函数
如何使用R中的scep()函数