logo

Com combinar dades a R mitjançant R merge, dplyr o data.table

R és un llenguatge de programació i un entorn de programari que s'utilitza principalment per a la computació estadística i els gràfics. Proporciona una àmplia gamma d'eines per a la manipulació de dades, l'anàlisi de dades, la visualització de dades i el modelatge estadístic.

La fusió de dades és una tasca d'anàlisi i manipulació de dades. A R hi ha diverses maneres de combinar marcs de dades, utilitzant el 'fusionar ()' funció de la base R, utilitzant el 'dplyr' paquet, i el 'taula.dades' paquet. En aquest tutorial, utilitzarem les tres maneres anteriors de combinar dades amb R.



1. Utilitzant 'merge ()' de la base R:

La funció merge() a la base R ens ajuda a combinar dos o més marcs de dades basats en columnes comunes. Realitza diversos tipus d'unions, com ara unió interna, unió esquerra, unió dreta i unió completa.

Sintaxi:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'x' i ‘y’ són els marcs de dades que voleu combinar.
  • 'per' especifica les columnes comunes sobre les quals es realitzarà la fusió.
  • Arguments addicionals com 'tot.x' , all.y’ i 'tots' controlar el tipus d'unió que s'ha de realitzar.

Exemple:



Considereu dos marcs de dades 'df1' i '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))>

>

>

Vegem exemples de realització de diversos tipus d'unions mitjançant la funció 'merge ()':

1. Unió interna (comportament per defecte):

R




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

>

>

Sortida:

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

El marc de dades 'inner_join' resultant només inclourà les files comunes on 'ID' està present a tant 'df1' com 'df2'.

2. Unió a l'esquerra ( 'all.x=TRUE' ):

R




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

>

programa d'herència en python
>

Sortida:

 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>

El marc de dades 'left_join' resultant inclourà totes les files de 'df1' i les files coincidents de 'df2'. Les files que no coincideixen de 'df2' tindran un valor 'NA'.

3. Uneix-te a la dreta ( 'all.y=TRUE' ):

R




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

>

>

Sortida:

 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>

El marc de dades 'right_join' resultant inclourà totes les files de 'df2' i les files coincidents de 'df1'. Les files que no coincideixen de 'df1' tindran valors 'NA'.

4. Unió exterior completa ( 'tot = VERTADER' )

R




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

>

polimorfisme en java

>

Sortida:

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>

El marc de dades 'full_join' resultant inclourà totes les files de 'df1' i 'df2'. Els valors que no coincideixen tindran valors 'NA'.

2. Utilitzant el paquet 'dplyr':

El paquet 'dplyr' proporciona un conjunt de funcions per a la manipulació de dades, inclosa la fusió de marcs de dades.

La funció principal per combinar-se a 'dplyr' és 'unir-se ()', que admet diversos tipus d'unions.

Sintaxi:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'x' i ‘y’ són els marcs de dades que s'han de combinar.
  • 'per' especifica les columnes comunes sobre les quals s'ha de realitzar la fusió
  • 'tipus_d'unió' pot ser 'interior', 'esquerra', 'dreta' o 'complet' per especificar el tipus d'unió.

Exemple:
Instal·leu el dplyr() empaquetar i crear dos marcs de dades, 'df1' i '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))>

>

>

Vegem exemples de realització de diversos tipus d'unions mitjançant les funcions 'dplyr':

1. Combinació interna:

edat de mia khalifa

R




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

>

>

Sortida:

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

El marc de dades 'inner_join' resultant només inclourà files comunes on 'ID' està present tant a 'df1' com a 'df2'.

2. Unió a l'esquerra:

R




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

>

>

Sortida:

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>

El marc de dades 'left_join' resultant inclourà totes les files de 'df1' i la files coincidents de 'df2' . Les files que no coincideixen de 'df2' tindran valors 'NA'.

3. Uneix-te a la dreta:

R




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

>

>

Sortida:

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>

El marc de dades 'right_join' resultant inclourà totes les files de 'df2' i la files coincidents de 'df1'. Les files que no coincideixen de 'df1' tindran valors 'NA'.

4. Unió exterior completa:

R


topologies



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

>

>

Sortida:

 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>

El marc de dades 'full_join' resultant inclourà totes les files de 'df1' i 'df2' . Les files que no coincideixen tindran valors 'NA'.

3. Utilitzant el paquet 'data.table':

El paquet 'data.table' ofereix un enfocament eficient i ràpid de la manipulació de dades. Proporciona la funció 'merge ()'. És similar al de la base R però optimitzat per a la velocitat.

Sintaxi:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'x' i ‘y’ són els marcs de dades que s'han de combinar.
  • 'per' especifica les columnes comunes sobre les quals es realitzarà la fusió.
  • Arguments addicionals com ‘all.x’, ‘all.y’ i 'tots' que controla el tipus d'unió.

Exemple:

Instal·leu la biblioteca data.table i creeu dues taules de dades, 'dt1' i '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))>

>

>

Vegem exemples de realització de diversos tipus de combinacions mitjançant la funció 'merge ()' del paquet 'data.table':

1. Unió interna (comportament per defecte):

R




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

>

>

Sortida:

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

El marc de dades 'inner_join' resultant només inclourà files comunes on 'ID' està present tant a 'df1' com a 'df2'.

2. Unió a l'esquerra ('all.x = TRUE'):

R


ordena la llista de matrius java



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

>

>

Sortida:

 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>

El marc de dades 'left_join' resultant inclourà tots No coincideixen de 'df1' i la files coincidents de 'df2'. Les files que no coincideixen de 'df2' tindran valors 'NA'.

3. Unir-se a la dreta ('all.y = TRUE'):

R




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

>

>

Sortida:

 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>

El marc de dades 'right_join' resultant inclourà tots No coincideixen files de 'df2' i les files coincidents de 'df1'. Les files que no coincideixen de 'df1' tindran valors 'NA'.

3. Unió externa completa ('tot = TRUE'):

R




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

>

>

Sortida:

 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>

El marc de dades 'full_join' resultant inclourà tots No coincideixen files tant de 'df1' com de 'df2'. Les files que no coincideixen tindran valors 'NA'.

Un dels avantatges d'utilitzar 'dplyr' i 'data.table' és que proporcionen una sintaxi més concisa i llegible per a la manipulació de dades en comparació amb la base R.

Resum:

  • 'merge()' proporciona una funció de propòsit general per combinar marcs de dades.
  • 'dplyr' se centra en la fusió amb un enfocament en la llegibilitat i la facilitat d'ús.
  • ‘dades. table' proporciona una manera ràpida i eficient de gestionar grans conjunts de dades amb un rendiment optimitzat.
  • Hem de triar l'enfocament en funció de la complexitat de la tasca i dels requisits de realització.