Как использовать функцию intersect() в R (с примерами)


Вы можете использовать функцию 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.