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.