Dplyr: come utilizzare anti_join per trovare record senza corrispondenze


È possibile utilizzare la funzione anti_join() dal pacchetto dplyr in R per restituire tutte le righe in un frame di dati che non hanno valori corrispondenti in un altro frame di dati.

Questa funzione utilizza la seguente sintassi di base:

 anti_join(df1, df2, by= ' col_name ')

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: utilizzare anti_join() con una colonna

Supponiamo di avere i seguenti due frame di dati in R:

 #create data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                  dots=c(12, 14, 19, 24, 36))

df2 <- data. frame (team=c('A', 'B', 'C', 'F', 'G'),
                  dots=c(12, 14, 19, 33, 17))

Possiamo usare la funzione anti_join() per restituire tutte le righe nel primo frame di dati che non hanno una squadra corrispondente nel secondo frame di dati:

 library (dplyr)

#perform anti join using 'team' column
anti_join(df1, df2, by=' team ')

  team points
1 D 24
2 E 36

Possiamo vedere che ci sono esattamente due squadre del primo frame di dati che non hanno un nome di squadra corrispondente nel secondo frame di dati.

Esempio 2: utilizzare anti_join() con più colonne

Supponiamo di avere i seguenti due frame di dati in R:

 #create data frames
df1 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                  position=c('G', 'G', 'F', 'G', 'F', 'C'),
                  dots=c(12, 14, 19, 24, 36, 41))

df2 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                  position=c('G', 'G', 'C', 'G', 'F', 'F'),
                  dots=c(12, 14, 19, 33, 17, 22))

Possiamo usare la funzione anti_join() per restituire tutte le righe nel primo frame di dati che non hanno una squadra e una posizione corrispondenti nel secondo frame di dati:

 library (dplyr)

#perform anti join using 'team' and 'position' columns
anti_join(df1, df2, by=c(' team ', ' position '))

  team position points
1 FY 19
2 BC 41

Possiamo vedere che ci sono esattamente due record dal primo frame di dati che non hanno un nome di squadra e una posizione corrispondenti nel secondo frame di dati.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre funzioni comuni in dplyr:

Come selezionare le colonne per indice utilizzando dplyr
Come unire più frame di dati utilizzando dplyr
Come filtrare le righe contenenti una determinata stringa utilizzando dplyr

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *