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를 사용하여 고유한 조합 찾기

다음 코드는 Tidyr 패키지의 Crossing() 함수를 사용하여 R의 두 벡터 사이에서 모든 고유한 요소 조합을 찾는 방법을 보여줍니다.

 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() 함수는 두 개 이상의 벡터와 함께 사용할 수도 있습니다.

Cross() 함수에 원하는 만큼의 벡터 이름을 제공하면 총 고유 조합 수를 찾을 수 있습니다.

예 2: data.table을 사용하여 고유한 조합 찾기

다음 코드는 data.table 패키지의 CJ() 함수를 사용하여 R의 두 벡터 사이에서 모든 고유한 요소 조합을 찾는 방법을 보여줍니다.

 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을 사용하여 고유 값을 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다