Как найти все уникальные комбинации двух векторов в r
Вы можете использовать любой из следующих методов, чтобы найти все уникальные комбинации элементов двух векторов в R:
Способ 1: используйте Тидир
library (tidyr) #find unique combinations of elements from vector1 and vector2 crossing(vector1, vector2)
Способ 2: использовать data.table
library (data.table) #find unique combinations of elements from vector1 and vector2 CJ(vector1, vector2, unique= TRUE )
Следующие примеры показывают, как использовать каждый из этих методов на практике.
Пример 1. Поиск уникальных комбинаций с помощью Tidyr
Следующий код показывает, как найти все уникальные комбинации элементов между двумя векторами в R с помощью функции Crossing() из пакета Tidyr :
library (tidyr)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)
#display all unique combinations of region and points
crossing(region, points)
# A tibble: 12 x 2
region points
1 East 0
2 East 5
3 East 10
4 North 0
5 North 5
6 North 10
7 South 0
8 South 5
9South 10
10 West 0
11 West 5
12 West 10
Результатом является фрейм данных, отображающий все уникальные комбинации элементов между двумя векторами.
Мы видим, что существует 12 уникальных комбинаций.
Если вы хотите узнать только количество уникальных комбинаций, вы можете обернуть эту функцию функцией nrow() :
library (tidyr)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)
#display number of unique combinations of region and points
nrow(crossing(region, points))
[1] 12
Обратите внимание, что функцию Crossing() также можно использовать с более чем двумя векторами.
Просто укажите имена любого количества векторов в функции Crossing() , чтобы найти общее количество уникальных комбинаций.
Пример 2. Найдите уникальные комбинации с помощью data.table.
Следующий код показывает, как найти все уникальные комбинации элементов между двумя векторами в R с помощью функции CJ() из пакета data.table :
library (data.table)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)
#display all unique combinations of region and points
CJ(region, points, unique= TRUE )
region points
1: East 0
2: East 5
3: East 10
4: North 0
5: North 5
6: North 10
7: South 0
8: South 5
9: South 10
10: West 0
11: West 5
12: West 10
Результатом является фрейм данных, отображающий все уникальные комбинации элементов между двумя векторами.
Обратите внимание, что результаты функции CJ() соответствуют результатам функции Crossing() .
Функцию CJ() также можно использовать с более чем двумя векторами.
Просто укажите имена любого количества векторов в функции CJ() , чтобы найти общее количество уникальных комбинаций.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как посчитать уникальные значения по группам в R
Как выбрать отдельные строки во фрейме данных в R
Как посчитать отдельные значения с помощью dplyr