A: controlla se la riga di un frame di dati esiste in un altro


È possibile utilizzare la seguente sintassi per aggiungere una nuova colonna a un frame di dati in R che indica se ogni riga esiste in un altro frame di dati:

 df1$exists <- do. call (paste0, df1) %in% do. call (paste0, df2)

Questa particolare sintassi aggiunge una colonna chiamata esiste al frame di dati chiamato df1 che contiene TRUE o FALSE per indicare se ogni riga in df1 esiste in un altro frame di dati chiamato df2 .

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: controlla se la riga di un frame di dati esiste in un altro in R

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

 #create first data frame
df1 <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                  dots=c(12, 15, 22, 29, 24))

#view first data frame
df1

  team points
1 to 12
2 B 15
3 C 22
4 D 29
5 E 24

#create second data frame
df2 <- data. frame (team=c('A', 'D', 'F', 'G', 'H'),
                  dots=c(12, 29, 15, 19, 10))

#view second data frame
df2

  team points
1 to 12
2 D 29
3 F 15
4 G 19
5:10 a.m.

Possiamo utilizzare la seguente sintassi per aggiungere una colonna chiamata esiste al primo frame di dati che indica se ogni riga esiste nel secondo frame di dati:

 #add new column to df1 that shows if row exists in df2
df1$exists <- do. call (paste0, df1) %in% do. call (paste0, df2)

#view updated data frame
df1

  team points exists
1 TO 12 TRUE
2 B 15 FALSE
3 C 22 FALSE
4 D 29 TRUE
5 E 24 FALSE

La nuova colonna esiste indica se ogni riga nel primo frame di dati esiste nel secondo frame di dati.

Dal risultato possiamo vedere:

  • La prima riga di df1 esiste in df2 .
  • La seconda riga di df1 non esiste in df2 .
  • La terza riga di df1 non esiste in df2 .

E così via.

Tieni presente che puoi anche utilizzare is.numeric() per visualizzare 1 e 0 invece di TRUE o FALSE nella colonna esistente:

 #add new column to df1 that shows if row exists in df2
df1$exists <- as. numeric (do. call (paste0, df1) %in% do. call (paste0, df2))

#view updated data frame
df1

  team points exists
1 to 12 1
2 B 15 0
3 C 22 0
4 D 29 1
5 E 24 0

Un valore pari a 1 indica che la riga del primo blocco dati esiste nel secondo.

Al contrario, un valore pari a 0 indica che la riga nel primo frame di dati non esiste nel secondo.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

A: Come verificare se più colonne sono uguali
A: Come selezionare singole righe in un frame di dati
A: Come replicare le righe in un frame di dati

Aggiungi un commento

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