Como encontrar todas as combinações únicas de dois vetores em r
Você pode usar qualquer um dos seguintes métodos para encontrar todas as combinações únicas de elementos de dois vetores em R:
Método 1: use o Tidyr
library (tidyr) #find unique combinations of elements from vector1 and vector2 crossing(vector1, vector2)
Método 2: use data.table
library (data.table) #find unique combinations of elements from vector1 and vector2 CJ(vector1, vector2, unique= TRUE )
Os exemplos a seguir mostram como usar cada um desses métodos na prática.
Exemplo 1: Encontrando combinações únicas usando Tidyr
O código a seguir mostra como encontrar todas as combinações únicas de elementos entre dois vetores em R usando a função cross() do pacote 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
O resultado é um quadro de dados que exibe todas as combinações exclusivas de elementos entre os dois vetores.
Podemos ver que existem 12 combinações únicas.
Se você quiser apenas saber o número de combinações únicas, você pode agrupar esta função com a função 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
Observe que a função cross() também pode ser usada com mais de dois vetores.
Basta fornecer os nomes de quantos vetores desejar para a função cross() para encontrar o número total de combinações únicas.
Exemplo 2: Encontre combinações exclusivas usando data.table
O código a seguir mostra como encontrar todas as combinações exclusivas de elementos entre dois vetores em R usando a função CJ() do pacote 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
O resultado é um quadro de dados que exibe todas as combinações exclusivas de elementos entre os dois vetores.
Observe que os resultados da função CJ() correspondem aos resultados da função cruzamento() .
A função CJ() também pode ser usada com mais de dois vetores.
Basta fornecer os nomes de quantos vetores desejar para a função CJ() para encontrar o número total de combinações exclusivas.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:
Como contar valores únicos por grupo em R
Como selecionar linhas únicas em um quadro de dados em R
Como contar valores distintos usando dplyr