logo

Jak sloučit data v R pomocí R merge, dplyr nebo data.table

R je programovací jazyk a softwarové prostředí, které se primárně používá pro statistické výpočty a grafiku. Poskytuje širokou škálu nástrojů pro manipulaci s daty, analýzu dat, vizualizaci dat a statistické modelování.

Slučování dat je úkolem analýzy dat a manipulace s daty. V R existují různé způsoby, jak sloučit datové rámce pomocí 'spojit()' funkce ze základu R, pomocí „dplyr“ balíček a 'datová tabulka' balík. V tomto tutoriálu použijeme výše uvedené tři způsoby sloučení dat pomocí R.



1. Použití ‚merge()‘ ze základny R:

Funkce merge() v základu R nám pomáhá kombinovat dva nebo více datových rámců na základě společných sloupců. Provádí různé typy spojení, jako je vnitřní spojení, levé spojení, pravé spojení a úplné spojení.

Syntax:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'X' a 'a' jsou datové rámce, které chcete sloučit.
  • 'podle' určuje společné sloupce, na kterých se sloučení provede.
  • Další argumenty jako ‘all.x’ , spojenec' a 'Všechno' ovládat typ spojení, které má být provedeno.

Příklad:



Zvažte dva datové 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))>

>

>

Podívejme se na příklady provádění různých typů spojení pomocí funkce „merge()“:

1. Vnitřní spojení (výchozí chování):

R




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

>

>

Výstup:

 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ý datový rámec „inner_join“ bude obsahovat pouze běžné řádky kde „ID“ je přítomen v jak „df1“, tak „df2“.

2. Levé připojení ( ‘all.x=TRUE’ ):

R




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

>

seznam java do pole
>

Výstup:

 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ý datový rámec „left_join“ bude zahrnovat všechny řádky z „df1“ a odpovídající řádky z „df2“. Neodpovídající řádky z „df2“ budou mít hodnotu „NA“.

3. Správné připojení ( ‘all.y=TRUE’ ):

R




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

>

>

Výstup:

 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ý datový rámec „right_join“ bude zahrnovat všechny řádky z „df2“ a odpovídající řádky z „df1“. Neodpovídající řádky z „df1“ budou mít hodnoty „NA“.

4. Úplné vnější spojení ( 'vše = PRAVDA' )

R




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

výlet ale

>

>

Výstup:

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ý datový rámec „full_join“ bude obsahovat všechny řádky z „df1“ a „df2“. Neodpovídající hodnoty budou mít hodnoty „NA“.

2. Použití balíčku „dplyr“:

Balíček ‚dplyr‘ poskytuje sadu funkcí pro manipulaci s daty, včetně slučování datových rámců.

Primární funkcí pro sloučení v „dplyr“ je 'připojit se()', který podporuje různé typy spojení.

Syntax:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'X' a 'a' jsou datové rámce, které mají být sloučeny.
  • 'podle' určuje společné sloupce, na kterých se má sloučení provést
  • ‘type_of_join’ může být ‚vnitřní‘, ‚levý‘, ‚pravý‘ nebo ‚plný‘ pro určení typu spojení.

Příklad:
Nainstalujte dplyr() zabalit a vytvořit dva datové 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))>

>

>

Podívejme se na příklady provádění různých typů spojení pomocí funkcí „dplyr“:

1. Vnitřní spojení:

pouzdro na přepínač java

R




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

>

>

Výstup:

 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ý datový rámec „inner_join“ bude obsahovat pouze běžné řádky, kde je „ID“ přítomno v „df1“ i „df2“.

2. Levý spoj:

R




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

>

>

Výstup:

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ý datový rámec „left_join“ bude obsahovat všechny řádky z „df1“ a odpovídající řádky z „df2“ . Neodpovídající řádky z „df2“ budou mít hodnoty „NA“.

3. Správné připojení:

R




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

>

>

Výstup:

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ý datový rámec „right_join“ bude obsahovat všechny řádky z „df2“ a odpovídající řádky z ‘df1’. Neodpovídající řádky „df1“ budou mít hodnoty „NA“.

4. Úplné vnější spojení:

R




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

>

>

Výstup:

 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ý datový rámec „full_join“ bude obsahovat všechny řádky z „df1“ a „df2“ . Neodpovídající řádky budou mít hodnoty „NA“.

3. Použití balíčku „data.table“:

Balíček ‚data.table‘ nabízí efektivní a rychlý přístup k manipulaci s daty. Poskytuje funkci „merge()“. Je podobný tomu v základním R, ale je optimalizován pro rychlost.

Syntax:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'X' a 'a' jsou datové rámce, které mají být sloučeny.
  • 'podle' určuje společné sloupce, na kterých se sloučení provede.
  • Další argumenty jako 'all.x', 'all.y' a 'Všechno' který řídí typ spojení.

Příklad:

Nainstalujte knihovnu data.table a vytvořte dvě datové tabulky, ‚dt1‘ a ‚dt2‘.

R




zalamování slov css

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

>

>

Podívejme se na příklady provádění různých typů sloučení pomocí funkce ‚merge()‘ z balíčku ‚data.table‘:

1. Vnitřní spojení (výchozí chování):

R




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

>

>

Výstup:

 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ý datový rámec „inner_join“ bude obsahovat pouze běžné řádky, kde je „ID“ přítomno v „df1“ i „df2“.

2. Levé spojení( ‘all.x = TRUE’):

R

java tutoriál




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

>

>

Výstup:

 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ý datový rámec „left_join“ bude obsahovat Všechno Neodpovídající z „df1“ a odpovídající řádky z ‘df2’. Neodpovídající řádky z „df2“ budou mít hodnoty „NA“.

3. Správné připojení( ‘all.y = TRUE’):

R




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

>

>

Výstup:

 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ý datový rámec „right_join“ bude obsahovat Všechno Neodpovídající řádky z „df2“ a odpovídající řádky z „df1“. Neodpovídající řádky z „df1“ budou mít hodnoty „NA“.

3. Úplné vnější spojení ('vše = TRUE'):

R




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

>

>

Výstup:

 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ý datový rámec „full_join“ bude obsahovat Všechno Neodpovídající řádky z „df1“ a „df2“. Neodpovídající řádky budou mít hodnoty „NA“.

Jednou z výhod použití „dplyr“ a „data.table“ je to, že poskytují stručnější a čitelnější syntaxi pro manipulaci s daty ve srovnání se základním R.

Souhrn:

  • „merge()“ poskytuje univerzální funkci pro slučování datových rámců.
  • „dplyr“ se zaměřuje na sloučení se zaměřením na čitelnost a snadné použití.
  • 'data. table‘ poskytuje rychlý a efektivní způsob zpracování velkých datových sad s optimalizovaným výkonem.
  • Měli bychom zvolit přístup na základě složitosti úkolu a požadavků na provedení.