Ako zlúčiť údaje v R pomocou R merge, dplyr alebo data.table

R je programovací jazyk a softvérové ​​prostredie, ktoré sa primárne používa na štatistické výpočty a grafiku. Poskytuje širokú škálu nástrojov na manipuláciu s údajmi, analýzu údajov, vizualizáciu údajov a štatistické modelovanie.

Zlučovanie údajov je úlohou analýzy údajov a manipulácie s nimi. V R existujú rôzne spôsoby zlúčenia dátových rámcov pomocou 'zlúčiť()' funkcie zo základu R pomocou „dplyr“ balík a ‘data.table’ balík. V tomto návode použijeme vyššie uvedené tri spôsoby na zlúčenie údajov pomocou R.

1. Použitie „merge()“ zo základne R:

Funkcia merge() v základnom R nám pomáha skombinovať dva alebo viac dátových rámcov na základe spoločných stĺpcov. Vykonáva rôzne typy spojení, ako je vnútorné spojenie, ľavé spojenie, pravé spojenie a úplné spojenie.

Syntax:

merged_df  <- merge(x,y,by = 'common_column',..) 
  • 'X' a 'a' sú dátové rámce, ktoré chcete zlúčiť.
  • „by“ určuje spoločné stĺpce, na ktorých sa zlúčenie vykoná.
  • Dodatočné argumenty ako „all.x“ , all.y' a 'všetko' ovládať typ spojenia, ktoré sa má vykonať.

Príklad:

Zvážte dva dátové rámce „df1“ a „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))>

Pozrime sa na príklady vykonávania rôznych typov spojení pomocou funkcie „merge()“:

1. Vnútorné spojenie (predvolené správanie):

R




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

Výkon:

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

Výsledný dátový rámec „inner_join“ bude obsahovať iba bežné riadky kde „ID“ je prítomný v „df1“ aj „df2“.

2. Ľavé pripojenie ( ‘all.x=TRUE’ ):

R




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

Výkon:

 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 

Výsledný dátový rámec „left_join“ bude obsahovať všetky riadky z „df1“ a zodpovedajúce riadky z „df2“. Nezhodné riadky z „df2“ budú mať hodnotu „NA“.

3. Pripojte sa vpravo ( ‘all.y=TRUE’ ):

R




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

Výkon:

 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 

Výsledný dátový rámec „right_join“ bude obsahovať všetky riadky z „df2“ a zodpovedajúce riadky z „df1“. Nezhodné riadky z „df1“ budú mať hodnoty „NA“.

4. Úplné vonkajšie spojenie ( „všetko = TRUE“ )

R




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

Výkon:

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 

Výsledný dátový rámec „full_join“ bude zahŕňať všetky riadky z „df1“ a „df2“. Nezhodné hodnoty budú mať hodnoty „NA“.

2. Použitie balíka „dplyr“:

Balík „dplyr“ poskytuje súbor funkcií na manipuláciu s údajmi vrátane zlučovania dátových rámcov.

Primárna funkcia na zlúčenie v „dplyr“ je „pripojiť ()“, ktorý podporuje rôzne typy spojení.

Syntax:

merged_df <- join(x,y,by='common_column',type='type_of_join') 
  • 'X' a 'a' sú dátové rámce, ktoré sa majú zlúčiť.
  • „by“ určuje spoločné stĺpce, na ktorých sa má zlúčenie vykonať
  • ‘type_of_join’ môže byť „vnútorný“, „ľavý“, pravý“ alebo „plný“ na určenie typu spojenia.

Príklad:
Nainštalujte dplyr() zabaliť a vytvoriť dva dátové rámce, „df1“ a „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))>

Pozrime sa na príklady vykonávania rôznych typov spojení pomocou funkcií „dplyr“:

1. Vnútorné spojenie:

R




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

Výkon:

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

Výsledný dátový rámec „inner_join“ bude obsahovať iba spoločné riadky, v ktorých je „ID“ prítomné v „df1“ aj „df2“.

2. Ľavé spojenie:

R




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

Výkon:

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 

Výsledný dátový rámec „left_join“ bude zahŕňať všetky riadky z „df1“ a zodpovedajúce riadky z „df2“ . Nezhodné riadky z „df2“ budú mať hodnoty „NA“.

3. Správne pripojenie:

R




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

Výkon:

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 

Výsledný dátový rámec „right_join“ bude zahŕňať všetky riadky z „df2“ a zodpovedajúce riadky z „df1“. Nezhodné riadky „df1“ budú mať hodnoty „NA“.

4. Úplné vonkajšie spojenie:

R




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

Výkon:

 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 

Výsledný dátový rámec „full_join“ bude zahŕňať všetky riadky z „df1“ a „df2“ . Nezhodné riadky budú mať hodnoty „NA“.

3. Použitie balíka „data.table“:

Balík „data.table“ ponúka efektívny a rýchly prístup k manipulácii s údajmi. Poskytuje funkciu „zlúčiť ()“. Je podobný tomu v základnom R, ale je optimalizovaný pre rýchlosť.

Syntax:

merged_dt  <- merge(x, y, by = 'common_column', ...) 
  • 'X' a 'a' sú dátové rámce, ktoré sa majú zlúčiť.
  • „by“ určuje spoločné stĺpce, na ktorých sa zlúčenie vykoná.
  • Dodatočné argumenty ako 'all.x', 'all.y' a 'všetko' ktorý riadi typ spojenia.

Príklad:

Nainštalujte knižnicu data.table a vytvorte dve tabuľky údajov, ‚dt1‘ a ‚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))>

Pozrime sa na príklady vykonávania rôznych typov zlúčení pomocou funkcie „merge()“ z balíka „data.table“:

1. Vnútorné spojenie (predvolené správanie):

R




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

Výkon:

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

Výsledný dátový rámec „inner_join“ bude obsahovať iba spoločné riadky, v ktorých je „ID“ prítomné v „df1“ aj „df2“.

2. Ľavé spojenie( ‘all.x = TRUE’):

R




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

Výkon:

 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 

Výsledný dátový rámec „left_join“ bude zahŕňať všetky Nezodpovedajúce z „df1“ a zodpovedajúce riadky z „df2“. Nezhodné riadky z „df2“ budú mať hodnoty „NA“.

3. Správne pripojenie( ‘all.y = TRUE’):

R




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

Výkon:

 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 

Výsledný dátový rámec „right_join“ bude zahŕňať všetky Nezodpovedajúce riadky z „df2“ a zodpovedajúce riadky z „df1“. Nezhodné riadky z „df1“ budú mať hodnoty „NA“.

3. Úplné vonkajšie spojenie ('všetko = TRUE'):

R




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

Výkon:

 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 

Výsledný dátový rámec „full_join“ bude zahŕňať všetky Nezodpovedajúce riadkov z „df1“ a „df2“. Nezhodné riadky budú mať hodnoty „NA“.

Jednou z výhod používania „dplyr“ a „data.table“ je to, že poskytujú stručnejšiu a čitateľnejšiu syntax na manipuláciu s údajmi v porovnaní so základom R.

Zhrnutie:

  • „merge()“ poskytuje univerzálnu funkciu na zlučovanie dátových rámcov.
  • „dplyr“ sa zameriava na zlúčenie so zameraním na čitateľnosť a jednoduchosť používania.
  • „údaje. table‘ poskytuje rýchly a efektívny spôsob spracovania veľkých množín údajov s optimalizovaným výkonom.
  • Prístup by sme mali zvoliť na základe zložitosti úlohy a požiadaviek na vykonanie.