Come trovare tutte le combinazioni uniche di due vettori in r
È possibile utilizzare uno dei seguenti metodi per trovare tutte le combinazioni univoche di elementi di due vettori in R:
Metodo 1: usa Tidyr
library (tidyr) #find unique combinations of elements from vector1 and vector2 crossing(vector1, vector2)
Metodo 2: utilizzare data.table
library (data.table) #find unique combinations of elements from vector1 and vector2 CJ(vector1, vector2, unique= TRUE )
Gli esempi seguenti mostrano come utilizzare nella pratica ciascuno di questi metodi.
Esempio 1: trovare combinazioni uniche utilizzando Tidyr
Il codice seguente mostra come trovare tutte le combinazioni univoche di elementi tra due vettori in R utilizzando la funzione cross() del pacchetto 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
Il risultato è un frame di dati che mostra tutte le combinazioni uniche di elementi tra i due vettori.
Possiamo vedere che ci sono 12 combinazioni uniche.
Se vuoi solo conoscere il numero di combinazioni univoche, puoi racchiudere questa funzione con la funzione 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
Tieni presente che la funzione cross() può essere utilizzata anche con più di due vettori.
Fornisci semplicemente i nomi di tutti i vettori che desideri alla funzione cross() per trovare il numero totale di combinazioni univoche.
Esempio 2: trova combinazioni univoche utilizzando data.table
Il codice seguente mostra come trovare tutte le combinazioni univoche di elementi tra due vettori in R utilizzando la funzione CJ() dal pacchetto 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
Il risultato è un frame di dati che mostra tutte le combinazioni uniche di elementi tra i due vettori.
Si noti che i risultati della funzione CJ() corrispondono ai risultati della funzione cross() .
La funzione CJ() può essere utilizzata anche con più di due vettori.
Fornisci semplicemente i nomi di tutti i vettori che desideri alla funzione CJ() per trovare il numero totale di combinazioni univoche.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come contare valori univoci per gruppo in R
Come selezionare singole righe in un frame di dati in R
Come contare valori distinti usando dplyr