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


Функцию setdiff() в R можно использовать для поиска различий между двумя наборами. Эта функция использует следующий синтаксис:

setdiff(x, y)

куда:

  • x, y: векторы или фреймы данных, содержащие последовательность элементов.

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

Пример 1: Setdiff с числовыми векторами

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

#define vectors
a <- c(1, 3, 4, 5, 9, 10)
b <- c(1, 2, 3, 4, 5, 6)

#find all values in *a* that do not occur in *b*
setdiff (a, b)

[1] 9 10

В векторе a есть два значения, которые не встречаются в векторе b : 9 и 10 .

Если мы поменяем порядок векторов в функции setdiff() , мы сможем вместо этого идентифицировать все значения в векторе b , которые не встречаются в векторе a :

#find all values in *b* that do not occur in *a*
setdiff (b, a)

[1] 2 6

В векторе b есть два значения, которые не встречаются в векторе a : 2 и 6 .

Пример 2: Setdiff с векторами символов

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

#define character vectors
char1 <- c('A', 'B', 'C', 'D', 'E')
char2 <- c('A', 'B', 'E', 'F', 'G')

#find all values in *char1* that do not occur in *char2*
setdiff (char1, char2)

[1] "C" "D"

Пример 3: Setdiff с фреймами данных

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

#define data frames
df1 <- data.frame(team=c('A', 'B', 'C', 'D'),
 conference=c('West', 'West', 'East', 'East'),
 points=c(88, 97, 94, 104))

df2 <- data.frame(team=c('A', 'B', 'C', 'D'),
 conference=c('West', 'West', 'East', 'East'),
 points=c(88, 97, 98, 99))

#find differences between the points columns in the two data frames
setdiff (df1$points, df2$points)

[1] 94 104

Мы видим, что значения 94 и 104 встречаются в столбце точек первого фрейма данных, но не в столбце точек второго фрейма данных.

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

Как суммировать определенные столбцы в R
Как суммировать определенные строки в R
Как выполнить частичное сопоставление строк в R

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