A: come unire i frame di dati in base ai nomi delle colonne


È possibile utilizzare i seguenti metodi per unire i frame di dati in base ai nomi delle colonne in R:

Metodo 1: unione in base al nome di una colonna corrispondente

 merge(df1, df2, by=' var1 ')

Metodo 2: unione in base al nome della colonna senza corrispondenza

 merge(df1, df2, by. x = ' var1 ', by. y = ' variable1 ')

Metodo 3: unione in base a più nomi di colonne corrispondenti

 merge(df1, df2, by=c(' var1 ', ' var2 '))

Metodo 4: unione in base a più nomi di colonne senza corrispondenza

 merge(df1, df2, by. x =c(' var1 ', ' var2 '), by. y =c(' variable1 ', ' variable2 '))

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: unione in base al nome della colonna corrispondente

Il codice seguente mostra come unire due frame di dati in R in base a un nome di colonna corrispondente:

 #define data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  rebounds=c(22, 31, 29, 20))

#merge based on one column with matching name
merge(df1, df2, by=' team ')

  team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

Il risultato è un frame di dati che corrisponde alle righe in ciascun frame di dati utilizzando la colonna del team .

Esempio 2: unione in base al nome di colonna senza corrispondenza

Il codice seguente mostra come unire due frame di dati in R in base a un nome di colonna senza corrispondenza:

 #define data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team_name=c('A', 'B', 'C', 'D'),
                  rebounds=c(22, 31, 29, 20))

#merge based on one column with unmatched name
merge(df1, df2, by. x = ' team ', by. y = ' team_name ')

  team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

Il risultato è un frame di dati che abbina le righe utilizzando la colonna team nel primo frame di dati e la colonna team_name nel secondo frame di dati.

Esempio 3: unione in base a più nomi di colonne corrispondenti

Il codice seguente mostra come unire due frame di dati in R in base a più nomi di colonne corrispondenti:

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by=c(' team ', ' position '))

  team position points rebounds
1 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

Il risultato è un frame di dati che corrisponde alle righe in ciascun frame di dati utilizzando la colonna squadra e posizione in ciascun frame di dati.

Esempio 4: unione basata su più nomi di colonne senza corrispondenza

Il codice seguente mostra come unire due frame di dati in R in base a più nomi di colonne non corrispondenti:

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team_name=c('A', 'A', 'B', 'B'),
                  position_name=c('G', 'F', 'G', 'F'),
                  rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by. x =c(' team ', ' position '), by. y =c(' team_name ', ' position_name '))

  team position points rebounds
1 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

Il risultato è un frame di dati che abbina le righe utilizzando le colonne team e position nel primo frame di dati e le colonne team_name e position_name nel secondo frame di dati.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre funzioni comuni dei frame di dati in R:

Come eseguire un join a sinistra in R
Come eseguire un inner join in R
Come eseguire una CERCA.VERT in R
Come aggiungere righe al frame di dati in R

Aggiungi un commento

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