logo

Slik slår du sammen data i R ved å bruke R merge, dplyr eller data.table

R er et programmeringsspråk og et programvaremiljø som primært brukes til statistisk databehandling og grafikk. Det gir et bredt spekter av verktøy for datamanipulering, dataanalyse, datavisualisering og statistisk modellering.

Sammenslåing av data er en oppgave innen dataanalyse og datamanipulering. I R er det forskjellige måter å slå sammen datarammer ved å bruke 'slå sammen()' funksjon fra base R, ved å bruke 'dplyr' pakken, og 'data bord' pakke. I denne opplæringen vil vi bruke de tre ovennevnte måtene å slå sammen data ved å bruke R.



1. Bruk «merge()» fra base R:

Merge()-funksjonen i base R hjelper oss å kombinere to eller flere datarammer basert på vanlige kolonner. Den utfører ulike typer sammenføyninger som indre sammenføyning, venstre sammenføyning, høyre sammenføyning og full sammenføyning.

Syntaks:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'x' og 'og' er datarammene du vil slå sammen.
  • 'av' spesifiserer de vanlige kolonnene som sammenslåingen skal utføres på.
  • Ytterligere argumenter som «all.x» , alliert' og 'alle' kontrollere hvilken type sammenføyning som skal utføres.

Eksempel:



Tenk på to datarammer 'df1' og 'df2'

R






df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))>

>

>

La oss se eksempler på hvordan du utfører ulike typer sammenføyninger ved å bruke funksjonen 'merge()':

1. Inner sammenføyning (standard oppførsel):

R




inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000>

Den resulterende «inner_join»-datarammen vil bare inkludere de vanlige radene hvor 'ID' er tilstede i både 'df1' og 'df2'.

2. Venstre bli med ( 'all.x=TRUE' ):

R




left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)>

>

liste java
>

Produksjon:

 ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000>

Den resulterende «left_join»-datarammen vil inkludere alle rader fra 'df1' og de samsvarende radene fra 'df2'. Ikke-samsvarende rader fra 'df2' vil ha en 'NA'-verdi

3. Høyre bli med ( 'all.y=TRUE' ):

R




right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000 4 5 NA Lawyer 7000>

Den resulterende 'right_join'-datarammen vil inkludere alle rader fra 'df2' og de samsvarende radene fra 'df1'. Ikke-samsvarende rader fra 'df1' vil ha 'NA'-verdier.

4. Full ytre skjøt( 'alle =SANT' )

R




full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)>

>

>

Produksjon:

ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000 5 5 NA Lawyer 7000>

Den resulterende «full_join»-datarammen vil inkludere alle rader fra både 'df1' og 'df2'. Ikke-samsvarende verdier vil ha NA-verdier.

reactjs kart

2. Bruke ‘dplyr’-pakken:

'dplyr'-pakken gir et sett med funksjoner for datamanipulering, inkludert sammenslåing av datarammer.

Den primære funksjonen for sammenslåing i 'dplyr' er 'bli med()', som støtter ulike typer sammenføyninger.

Syntaks:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'x' og 'og' er datarammene som skal slås sammen.
  • 'av' spesifiserer de vanlige kolonnene som sammenslåingen skal utføres på
  • «type_of_join» kan være 'indre', 'venstre', 'høyre' eller 'full' for å spesifisere typen sammenføyning.

Eksempel:
Installer dplyr() pakke og lage to datarammer, 'df1' og 'df2'.

R




library>(dplyr)> df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(20, 30, 40, 50))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(2000, 4000, 6000, 7000))>

>

>

La oss se eksempler på hvordan du utfører ulike typer sammenføyninger ved å bruke 'dplyr'-funksjonene:

1. Indre sammenføyning:

jsp

R




inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>

Den resulterende 'inner_join'-datarammen vil bare inkludere vanlige rader der 'ID' er til stede i både 'df1' og 'df2'.

2. Venstre bli med:

R




left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)>

>

>

Produksjon:

ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>

Den resulterende 'left_join'-datarammen vil inkludere alle rader fra 'df1' og samsvarende rader fra 'df2' . Ikke-samsvarende rader fra 'df2' vil ha 'NA'-verdier.

3. Høyre bli med:

R




right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)>

>

>

Produksjon:

ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>

Den resulterende 'right_join'-datarammen vil inkludere alle rader fra 'df2' og samsvarende rader fra 'df1'. Ikke-samsvarende rader av 'df1' vil ha 'NA'-verdier.

4. Full ytre skjøt:

R




full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)>

>

listenode i java
>

Produksjon:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>

Den resulterende «full_join»-datarammen vil inkludere alle rader fra både 'df1' og 'df2' . Ikke-matchende rader vil ha 'NA'-verdier.

3. Ved å bruke pakken «data.table»:

'data.table'-pakken tilbyr en effektiv og rask tilnærming til datamanipulering. Den gir funksjonen 'merge()'. Den er lik den i base R, men optimalisert for hastighet.

Syntaks:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'x' og 'og' er datarammene som skal slås sammen.
  • 'av' spesifiserer de vanlige kolonnene som sammenslåingen skal utføres på.
  • Ytterligere argumenter som 'all.x', 'all.y' og 'alle' som styrer typen sammenføyning.

Eksempel:

Installer data.table-biblioteket og lag to datatabeller, 'dt1' og 'dt2'.

R




library>(data.table)> dt1 <->data.table>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> dt2 <->data.table>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))>

>

>

La oss se eksempler på hvordan du utfører ulike typer sammenslåinger ved å bruke 'merge()'-funksjonen fra 'data.table'-pakken:

1. Inner join (standard oppførsel):

R




inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>

Den resulterende 'inner_join'-datarammen vil bare inkludere vanlige rader der 'ID' er til stede i både 'df1' og 'df2'.

2. Venstre join( ‘all.x = TRUE’):

R


javascript nærmest



left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>

Den resulterende 'left_join'-datarammen vil inkludere alle Ikke-matchende fra 'df1' og samsvarende rader fra 'df2'. Ikke-samsvarende rader fra 'df2' vil ha 'NA'-verdier.

3. Høyre join( ‘all.y = TRUE’):

R




right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>

Den resulterende 'right_join'-datarammen vil inkludere alle Ikke-matchende rader fra 'df2' og de samsvarende radene fra 'df1'. Ikke-matchende rader fra 'df1' vil ha 'NA'-verdier.

3. Full ytre sammenføyning( 'alle = TRUE'):

R




full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)>

>

>

Produksjon:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>

Den resulterende «full_join»-datarammen vil inkludere alle Ikke-matchende rader fra både 'df1' og 'df2'. Ikke-matchende rader vil ha 'NA'-verdier.

En av fordelene med å bruke 'dplyr' og 'data.table' er at de gir en mer kortfattet og lesbar syntaks for datamanipulering sammenlignet med base R.

Sammendrag:

  • 'merge()' gir en generell funksjon for å slå sammen datarammer.
  • ‘dplyr’ fokuserer på sammenslåing med fokus på lesbarhet og brukervennlighet.
  • 'data. table' gir en rask og effektiv måte å håndtere store datasett med optimert ytelse.
  • Vi bør velge tilnærming basert på oppgavens kompleksitet og utførelseskrav.