Как использовать оператор «НЕ В» в R (с примерами)


Вы можете использовать следующий базовый синтаксис для выбора всех элементов, которых нет в списке значений в R:

! (data %in% c(value1, value2, value3, ...))

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: Как использовать «НЕ В» с векторами

В следующем коде показано, как выбрать все значения вектора в R, которые не входят в определенный список значений:

#define numeric vector
num_data <- c(1, 2, 3, 3, 4, 4, 5, 5, 6)

#display all values in vector not equal to 3 or 4
num_data[ ! (num_data %in% c(3, 4))]

[1] 1 2 5 5 6

В выводе отображаются все значения, не равные 3 или 4.

Обратите внимание, что мы можем использовать тот же синтаксис для выбора всех элементов вектора, которые не входят в определенный список символов:

#define vector of character data
char_data <- c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D')

#display all elements in vector not equal to 'A', or 'C'
char_data[ ! (char_data %in% c('A', 'C'))]

[1] "B" "B" "D" "D" "D"

Все значения, которые не равны «A» или «C», отображаются в выходных данных.

Пример 2: Как использовать «NOT IN» с фреймами данных

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

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
 points=c(77, 81, 89, 83, 99, 92, 97),
 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

 team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (team %in% c('A', 'B')))

 team points assists
5 C 99 32
6 C 92 39
7 D 97 14

Обратите внимание, что возвращаются все строки, не содержащие «A» или «B» в столбце «команда».

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

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
 points=c(77, 81, 89, 83, 99, 92, 97),
 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

 team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (points %in% c(89, 99)))

 team points assists
1 A 77 19
2 A 81 22
4 B 83 15
6 C 92 39
7 D 97 14

Обратите внимание, что возвращаются все строки, которые не равны 89 или 99 в столбце точек.

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

Как использовать оператор %in% в R
Как подмножить фрейм данных в R
Как создать подмножество списков в R

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