Как использовать оператор %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

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