A: gegevensframes samenvoegen op basis van meerdere kolommen


U kunt de volgende basissyntaxis gebruiken om twee gegevensframes in R samen te voegen op basis van meerdere kolommen:

 merge(df1, df2, by. x =c(' col1 ', ' col2 '), by. y =c(' col1 ', ' col2 '))

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: gegevensblokken over meerdere kolommen samenvoegen

Stel dat we de volgende twee dataframes in R hebben:

 #define data frames
df1 = data. frame (playerID=c(1, 2, 3, 4, 5, 6),
                 team=c('A', 'B', 'B', 'B', 'C', 'C'),
                 dots=c(19, 22, 25, 29, 34, 39))

df2 = data. frame (playerID=c(1, 2, 3, 4),
                 tm=c('A', 'B', 'B', 'B'),
                 rebounds=c(7, 8, 8, 14))

#view first data frame
df1

  playerID team points
1 1 A 19
2 2 B 22
3 3 B 25
4 4 B 29
5 5 C 34
6 6 C 39

#view second data frame
df2 

  playerID tm rebounds
1 1 To 7
2 2 B 8
3 3 B 8
4 4 B 14

Houd er rekening mee dat beide dataframes de spelerID- kolom delen, maar dat de teamkolommen in elk dataframe verschillende namen hebben:

  • Het eerste dataframe heeft de kolom ‚ team
  • Het tweede dataframe heeft kolom ‚ tm

Om deze dataframes samen te voegen op basis van de speler-ID- en teamkolommen, moeten we de argumenten by.x en by.y gebruiken.

We kunnen de volgende code gebruiken om deze samenvoeging uit te voeren:

 #merge two data frames
merged = merge(df1, df2, by. x =c(' playerID ', ' team '), by. y =c(' playerID ', ' tm '))

#view merged data frame
merged

  playerID team points rebounds
1 1 A 19 7
2 2 B 22 8
3 3 B 25 8
4 4 B 29 14

Het uiteindelijke samengevoegde dataframe bevat gegevens voor alle vier de spelers die tot de oorspronkelijke twee dataframes behoren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere algemene dataframefuncties in R kunt uitvoeren:

Hoe maak je een linkse join in R
Hoe een VERT.ZOEKEN uit te voeren in R
Hoe rijen aan een dataframe toe te voegen in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert