Функцию 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