logo

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)>

>

zoznam triediť podľa java
>

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




java slučky

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:

Prepojený zoznam java

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

np.random.rand




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


string.replaceall java



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.