R er et programmeringssprog og et softwaremiljø, der primært bruges til statistisk databehandling og grafik. Det giver en bred vifte af værktøjer til datamanipulation, dataanalyse, datavisualisering og statistisk modellering.
Sammenlægning af data er en opgave inden for dataanalyse og datamanipulation. I R er der forskellige måder at flette datarammer på ved hjælp af 'fusionere()' funktion fra basis R, ved hjælp af 'dplyr' pakken, og 'data.table' pakke. I denne vejledning vil vi bruge ovenstående tre måder at flette data ved hjælp af R.
1. Brug af 'merge()' fra basis R:
Merge()-funktionen i basis R hjælper os med at kombinere to eller flere datarammer baseret på fælles kolonner. Den udfører forskellige typer sammenføjninger såsom indre joinforbindelse, venstre joinforbindelse, højre joinforbindelse og fuld joinforbindelse.
Syntaks:
merged_df <- merge(x,y,by = 'common_column',..)>
- 'x' og 'og' er de datarammer, du vil flette.
- 'ved' specificerer de fælles kolonner, som fletningen skal udføres på.
- Yderligere argumenter som 'alle.x' , allieret' og 'alle' kontrollere, hvilken type sammenføjning, der skal udføres.
Eksempel:
Overvej 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))> |
>
>
Lad os se eksempler på udførelse af forskellige typer joinforbindelser ved hjælp af funktionen 'merge()':
1. Indre joinforbindelse (standardadfærd):
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Produktion:
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'-dataramme vil kun inkludere de fælles rækker hvor 'ID' er til stede i både 'df1' og 'df2'.
2. Venstre join( 'all.x=TRUE' ):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
liste java
>
Produktion:
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'-dataramme vil inkludere alle rækker fra 'df1' og de matchende rækker fra 'df2'. Ikke-matchende rækker fra 'df2' vil have en 'NA'-værdi
3. Højre tilslutning ( 'all.y=TRUE' ):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Produktion:
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'-dataramme vil inkludere alle rækker fra 'df2' og de matchende rækker fra 'df1'. Ikke-matchende rækker fra 'df1' vil have 'NA'-værdier.
4. Fuld ydre sammenføjning ( 'alle =SAND' )
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Produktion:
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' dataramme vil inkludere alle rækker fra både 'df1' og 'df2'. Ikke-matchende værdier vil have 'NA'-værdier.
reactjs kort
2. Brug af 'dplyr'-pakken:
'dplyr'-pakken indeholder et sæt funktioner til datamanipulation, herunder fletning af datarammer.
Den primære funktion til at flette i 'dplyr' er 'tilslutte()', som understøtter forskellige typer sammenføjninger.
Syntaks:
merged_df<- join(x,y,by='common_column',type='type_of_join')>
- 'x' og 'og' er datarammerne, der skal flettes.
- 'ved' angiver de fælles kolonner, som fletningen skal udføres på
- 'type_of_join' kan være 'indre', 'venstre', 'højre' eller 'fuld' for at angive typen af joinforbindelse.
Eksempel:
Installer dplyr() pakke og oprette 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))> |
>
>
Lad os se eksempler på udførelse af forskellige typer joinforbindelser ved hjælp af 'dplyr'-funktionerne:
1. Indre sammenføjning:
k-nn algoritme
R
inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Produktion:
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'-dataramme vil kun inkludere almindelige rækker, hvor 'ID' er til stede i både 'df1' og 'df2'.
2. Venstre tilslutning:
R
left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)> |
>
>
Produktion:
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'-dataramme vil inkludere alle rækker fra 'df1' og matchende rækker fra 'df2' . Ikke-matchende rækker fra 'df2' vil have 'NA'-værdier.
3. Højre tilslutning:
R
right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)> |
>
>
Produktion:
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'-dataramme vil inkludere alle rækker fra 'df2' og matchende rækker fra 'df1'. Ikke-matchende rækker af 'df1' vil have 'NA'-værdier.
4. Fuld ydre sammenføjning:
R
full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)> |
>
liste node i java
>
Produktion:
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' dataramme vil inkludere alle rækker fra både 'df1' og 'df2' . Ikke-matchende rækker vil have 'NA'-værdier.
3. Brug af 'data.table'-pakken:
'data.table'-pakken tilbyder en effektiv og hurtig tilgang til datamanipulation. Det giver funktionen 'merge()'. Den ligner den i base R, men optimeret til hastighed.
Syntaks:
merged_dt <- merge(x, y, by = 'common_column', ...)>
- 'x' og 'og' er de datarammer, der skal flettes.
- 'ved' specificerer de fælles kolonner, som fletningen skal udføres på.
- Yderligere argumenter som 'all.x', 'all.y' og 'alle' der styrer typen af joinforbindelse.
Eksempel:
Installer data.table-biblioteket og opret 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))> |
>
>
Lad os se eksempler på udførelse af forskellige typer fletninger ved hjælp af funktionen 'merge()' fra pakken 'data.table':
1. Indre joinforbindelse (standardadfærd):
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Produktion:
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'-dataramme vil kun inkludere almindelige rækker, hvor 'ID' er til stede i både 'df1' og 'df2'.
2. Venstre join( 'all.x = TRUE'):
R
hashtabel versus hashmap
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
>
Produktion:
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'-dataramme vil inkludere alle Ikke-matchende fra 'df1' og matchende rækker fra 'df2'. Ikke-matchende rækker fra 'df2' vil have 'NA'-værdier.
3. Højre join('all.y = TRUE'):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Produktion:
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'-dataramme vil inkludere alle Ikke-matchende rækker fra 'df2' og de matchende rækker fra 'df1'. Ikke-matchende rækker fra 'df1' vil have 'NA'-værdier.
3. Fuld ydre joinforbindelse ('alle = TRUE'):
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Produktion:
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' dataramme vil inkludere alle Ikke-matchende rækker fra både 'df1' og 'df2'. Ikke-matchende rækker vil have 'NA'-værdier.
En af fordelene ved at bruge 'dplyr' og 'data.table' er, at de giver en mere kortfattet og læsbar syntaks til datamanipulation sammenlignet med base R.
Resumé:
- 'merge()' giver en generel funktion til at flette datarammer.
- ’dplyr’ fokuserer på sammensmeltning med fokus på læsbarhed og brugervenlighed.
- 'data. table' giver en hurtig og effektiv måde at håndtere store datasæt med optimeret ydeevne.
- Vi bør vælge tilgangen ud fra opgavens kompleksitet og udførelseskrav.