R är ett programmeringsspråk och en mjukvarumiljö som främst används för statistisk beräkning och grafik. Den tillhandahåller ett brett utbud av verktyg för datamanipulation, dataanalys, datavisualisering och statistisk modellering.
Sammanfoga data är en uppgift inom dataanalys och datamanipulation. I R finns det olika sätt att slå samman dataramar med hjälp av 'sammanfoga()' funktion från bas R, med hjälp av 'dplyr' paketet och 'datatabell' paket. I den här handledningen kommer vi att använda ovanstående tre sätt att slå samman data med R.
1. Använd 'merge()' från bas R:
Merge()-funktionen i bas R hjälper oss att kombinera två eller flera dataramar baserat på vanliga kolumner. Den utför olika typer av sammanfogningar som inre sammanfogning, vänster sammanfogning, höger sammanfogning och full sammanfogning.
Syntax:
merged_df <- merge(x,y,by = 'common_column',..)>
- 'x' och 'och' är de dataramar som du vill slå samman.
- 'förbi' anger de vanliga kolumner som sammanslagningen kommer att utföras på.
- Ytterligare argument som 'all.x' , alliera' och 'Allt' kontrollera vilken typ av sammanfogning som ska utföras.
Exempel:
Tänk på två dataramar 'df1' och '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))> |
>
>
Låt oss se exempel på hur man utför olika typer av kopplingar med funktionen 'merge()':
1. Inre koppling (standardbeteende):
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 resulterande 'inner_join'-dataramen kommer bara att inkludera de vanliga raderna där 'ID' finns i både 'df1' och 'df2'.
2. Vänster gå med ( 'all.x=TRUE' ):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
Java-mjukvarumönster
>
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 resulterande 'left_join'-dataramen kommer att inkludera alla rader från 'df1' och de matchande raderna från 'df2'. Icke-matchande rader från 'df2' kommer att ha ett 'NA'-värde
3. Höger gå med ( 'all.y=TRUE' ):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
Ladda ner vlc media player från YouTube
>
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 resulterande 'right_join'-dataramen kommer att inkludera alla rader från 'df2' och de matchande raderna från 'df1'. Icke-matchande rader från 'df1' kommer att ha 'NA'-värden.
4. Full yttre sammanfogning( 'alla =SANT' )
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 resulterande 'full_join'-dataramen kommer att inkludera alla rader från både 'df1' och 'df2'. Icke-matchande värden kommer att ha NA-värden.
2. Använda 'dplyr'-paketet:
Paketet 'dplyr' tillhandahåller en uppsättning funktioner för datamanipulering, inklusive sammanslagning av dataramar.
Den primära funktionen för sammanslagning i 'dplyr' är 'Ansluta sig()', som stöder olika typer av sammanfogningar.
Syntax:
merged_df<- join(x,y,by='common_column',type='type_of_join')>
- 'x' och 'och' är dataramarna som ska slås samman.
- 'förbi' anger de gemensamma kolumner som sammanslagningen ska utföras på
- 'typ_av_anslutning' kan vara 'inre', 'vänster', 'höger' eller 'full' för att ange typen av sammanfogning.
Exempel:
Installera dplyr() paketera och skapa två dataramar, 'df1' och '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))> |
>
>
Låt oss se exempel på hur man utför olika typer av kopplingar med hjälp av 'dplyr'-funktionerna:
1. Inre koppling:
sträng och java
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 resulterande 'inner_join'-dataramen kommer endast att inkludera vanliga rader där 'ID' finns i både 'df1' och 'df2'.
2. Vänster gå med:
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 resulterande 'left_join'-dataramen kommer att inkludera alla rader från 'df1' och den matchande rader från 'df2' . Icke-matchande rader från 'df2' kommer att ha 'NA'-värden.
3. Höger gå med:
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 resulterande 'right_join'-dataramen kommer att inkludera alla rader från 'df2' och den matchande rader från 'df1'. Icke-matchande rader av 'df1' kommer att ha 'NA'-värden.
4. Full yttre sammanfogning:
R
linux som
full_join <->full_join>(df1, df2, by =>'ID'>)> 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 resulterande 'full_join'-dataramen kommer att inkludera alla rader från både 'df1' och 'df2' . Icke-matchande rader kommer att ha NA-värden.
3. Använda paketet 'data.table':
Paketet 'data.table' erbjuder ett effektivt och snabbt tillvägagångssätt för datamanipulation. Den tillhandahåller funktionen 'merge()'. Den liknar den i bas R men optimerad för hastighet.
Syntax:
merged_dt <- merge(x, y, by = 'common_column', ...)>
- 'x' och 'och' är dataramarna som ska slås samman.
- 'förbi' anger de vanliga kolumner som sammanslagningen kommer att utföras på.
- Ytterligare argument som 'all.x', 'all.y' och 'Allt' som styr typen av anslutning.
Exempel:
Installera data.table-biblioteket och skapa två datatabeller, 'dt1' och '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))> |
>
>
Låt oss se exempel på att utföra olika typer av sammanslagningar med funktionen 'merge()' från paketet 'data.table':
1. Inre koppling (standardbeteende):
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 resulterande 'inner_join'-dataramen kommer endast att inkludera vanliga rader där 'ID' finns i både 'df1' och 'df2'.
2. Vänster join( 'all.x = TRUE'):
R
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 resulterande 'left_join'-dataramen kommer att inkludera Allt Icke-matchande från 'df1' och den matchande rader från 'df2'. Icke-matchande rader från 'df2' kommer att ha 'NA'-värden.
3. Höger join( 'all.y = TRUE'):
R
sova för javascript
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 resulterande 'right_join'-dataramen kommer att inkludera Allt Icke-matchande rader från 'df2' och de matchande raderna från 'df1'. Icke-matchande rader från 'df1' kommer att ha 'NA'-värden.
3. Full yttre sammanfogning ('all = 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 resulterande 'full_join'-dataramen kommer att inkludera Allt Icke-matchande rader från både 'df1' och 'df2'. Icke-matchande rader kommer att ha NA-värden.
En av fördelarna med att använda 'dplyr' och 'data.table' är att de ger en mer kortfattad och läsbar syntax för datamanipulation jämfört med bas R.
Sammanfattning:
- 'merge()' tillhandahåller en allmän funktion för att slå samman dataramar.
- 'dplyr' fokuserar på sammanslagning med fokus på läsbarhet och användarvänlighet.
- 'data. table' ger ett snabbt och effektivt sätt att hantera stora datamängder med optimerad prestanda.
- Vi bör välja tillvägagångssätt baserat på uppgiftens komplexitet och prestationskrav.