Как использовать оператор %in% в R (с примерами)


Оператор %in% в R позволяет определить, принадлежит ли элемент вектору или фрейму данных.

В этом руководстве представлены три примера использования этой функции в различных сценариях.

Пример 1: Использование %in% с векторами

Мы можем использовать оператор %in% , чтобы определить, сколько элементов одного вектора принадлежит другому вектору:

#define two vectors of data
data1 <- c(3, 5, 7, 7, 14, 19, 22, 25)

data2 <- c(1, 2, 3, 4, 5)

#produce new vector that contains elements of data1 that are in data2
data1[data1 %in% data2]

[1] 3 5

Мы видим, что значения 3 и 5 являются единственными элементами из вектора data2 , которые находятся в векторе data1 .

Пример 2. Используйте %in% для фильтрации фреймов данных

Мы также можем использовать оператор %in% для фильтрации строк во фрейме данных, содержащих определенные значения:

#define data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'B', 'C'),
 points=c(67, 72, 77, 89, 84, 97),
 assists=c(14, 16, 12, 22, 25, 20))

#view data frame
df

 team points assists
1 A 67 14
2 A 72 16
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

#produce new data frame that only contains rows where team is 'B'
df_new <- df[df$team %in% c('B'), ]
df_new

 team points assists
3 B 77 12
4 B 89 22
5 B 84 25

#produce new data frame that only contains rows where team is 'B' or 'C'
df_new2 <- df[df$team %in% c('B', 'C'), ]
df_new2

 team points assists
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

Пример 3. Используйте %in% для создания столбцов фрейма данных

Мы также можем использовать оператор %in% для создания новых столбцов фрейма данных.

Например, в следующем коде показано, как создать новый столбец с названием Division , в котором команды «A» и «C» размещаются на «Востоке», а команды «B» — на «Западе»:

library(dplyr)

#define data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'B', 'C'),
 points=c(67, 72, 77, 89, 84, 97),
 assists=c(14, 16, 12, 22, 25, 20))

#view data frame
df

 team points assists
1 A 67 14
2 A 72 16
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

#create new column called *division*
df$division = if_else (df$team %in% c('A', 'C'), 'East', 'West')
df

 team points assists division
1 A 67 14 East
2 A 72 16 East
3 B 77 12 West
4 B 89 22 West
5 B 84 25 West
6 C 97 20 East

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

Как объединить два столбца в один в R
Как добавить строки во фрейм данных в R
Как сравнить два столбца в R