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í.