Как найти все уникальные комбинации двух векторов в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *