Как использовать функцию 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'),
                  dots=c(12, 20, 25, 19))

df1

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

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

df2

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

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

  team points
1 to 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

Из результата мы видим, что оба фрейма данных имеют две общие строки.

Дополнительные ресурсы

В следующих руководствах объясняется, как использовать другие распространенные функции в R:

Как использовать функцию dim() в R
Как использовать функцию Transform() в R
Как использовать функцию swep() в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *