Вы можете использовать функцию intersect() в базе R, чтобы найти пересечение двух объектов.
«Пересечение» просто представляет элементы, общие для двух объектов.
Эта функция использует следующий базовый синтаксис:
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 имеют три общих значения: 1 , 5 и 19 .
Обратите внимание, что функция 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 имеют три общие строки: C , D и E .
Обратите внимание, что два вектора не обязательно должны быть одинаковой длины, чтобы функция intersect() работала.
Пример 2: Использование intersect() с фреймами данных
Чтобы найти общие строки двух фреймов данных, мы должны использовать функцию intersect() из пакета dplyr .
В следующем коде показано, как использовать эту функцию для поиска общих строк двух фреймов данных:
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:
Как использовать функцию dim() в R
Как использовать функцию transform() в R
Как использовать функцию развертки() в R