Як знайти всі унікальні комбінації двох векторів у r


Ви можете використовувати будь-який із наведених нижче методів, щоб знайти всі унікальні комбінації елементів двох векторів у R:

Спосіб 1: Використовуйте Tidyr

 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *