logo

So führen Sie Daten in R mithilfe von R merge, dplyr oder data.table zusammen

R ist eine Programmiersprache und eine Softwareumgebung, die hauptsächlich für statistische Berechnungen und Grafiken verwendet wird. Es bietet eine breite Palette von Tools zur Datenmanipulation, Datenanalyse, Datenvisualisierung und statistischen Modellierung.

Das Zusammenführen von Daten ist eine Aufgabe der Datenanalyse und Datenmanipulation. In R gibt es verschiedene Möglichkeiten, Datenrahmen zusammenzuführen 'verschmelzen()' Funktion von Basis R, unter Verwendung der „dplyr“ Paket und die 'Datentabelle' Paket. In diesem Tutorial verwenden wir die oben genannten drei Möglichkeiten, um Daten mit R zusammenzuführen.



1. Verwendung von „merge()“ von Basis R:

Die Funktion merge() in Basis R hilft uns, zwei oder mehr Datenrahmen basierend auf gemeinsamen Spalten zu kombinieren. Es führt verschiedene Arten von Joins durch, z. B. Inner Join, Left Join, Right Join und Full Join.

Syntax:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'X' Und 'Und' sind die Datenrahmen, die Sie zusammenführen möchten.
  • 'von' Gibt die gemeinsamen Spalten an, für die die Zusammenführung durchgeführt wird.
  • Zusätzliche Argumente wie „alle.x“ , Verbündete' Und 'alle' Steuern Sie die Art der durchzuführenden Verknüpfung.

Beispiel:



Betrachten Sie zwei Datenrahmen „df1“ und „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))>

>

>

Sehen wir uns Beispiele für die Durchführung verschiedener Arten von Verknüpfungen mit der Funktion „merge()“ an:

1. Innerer Join (Standardverhalten):

R




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

>

>

Ausgabe:

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

Der resultierende „inner_join“-Datenrahmen enthält nur die gemeinsamen Zeilen wo 'AUSWEIS' ist vorhanden in sowohl „df1“ als auch „df2“.

2. Links beitreten( „all.x=TRUE“ ):

R




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

>

Römische Zahlen 1 bis 100
>

Ausgabe:

 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>

Der resultierende „left_join“-Datenrahmen enthält alle Zeilen von „df1“ und die passenden Zeilen aus „df2“. Nicht übereinstimmende Zeilen aus „df2“ haben den Wert „NA“.

3. Rechts beitreten ( „all.y=TRUE“ ):

R




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

Was ist ein Linux-Dateisystem?
>

>

Ausgabe:

 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>

Der resultierende „right_join“-Datenrahmen enthält alle Zeilen von „df2“ und die passenden Zeilen von „df1“. Nicht übereinstimmende Zeilen aus „df1“ haben „NA“-Werte.

4. Vollständiger äußerer Join( „alle =WAHR“ )

R




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

>

>

Ausgabe:

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>

Der resultierende „full_join“-Datenrahmen enthält Folgendes: alle Zeilen von „df1“ und „df2“. Nicht übereinstimmende Werte haben „NA“-Werte.

2. Verwendung des Pakets „dplyr“:

Das Paket „dplyr“ bietet eine Reihe von Funktionen zur Datenbearbeitung, einschließlich der Zusammenführung von Datenrahmen.

Die Hauptfunktion für das Zusammenführen in „dplyr“ ist 'verbinden()', das verschiedene Arten von Verknüpfungen unterstützt.

Syntax:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'X' Und 'Und' sind die Datenrahmen, die zusammengeführt werden sollen.
  • 'von' Gibt die gemeinsamen Spalten an, für die die Zusammenführung durchgeführt werden soll
  • „type_of_join“ kann „inner“, „left“, „right“ oder „full“ sein, um den Join-Typ anzugeben.

Beispiel:
Installiere das dplyr() zwei Datenrahmen verpacken und erstellen, „df1“ Und „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))>

>

>

Sehen wir uns Beispiele für die Durchführung verschiedener Arten von Verknüpfungen mit den „dplyr“-Funktionen an:

1. Innerer Join:

bash else if

R




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

>

>

Ausgabe:

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

Der resultierende „inner_join“-Datenrahmen enthält nur die gemeinsame Zeilen, in denen „ID“ sowohl in „df1“ als auch in „df2“ vorhanden ist.

2. Linker Beitritt:

R




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

>

>

Ausgabe:

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>

Der resultierende Datenrahmen „left_join“ enthält: alle Zeilen ab „df1“ und das passende Zeilen aus „df2“ . Nicht übereinstimmende Zeilen aus „df2“ haben „NA“-Werte.

3. Rechts beitreten:

R




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

>

>

Ausgabe:

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>

Der resultierende „right_join“-Datenrahmen enthält: alle Zeilen ab „df2“ und das passende Zeilen aus „df1“. Nicht übereinstimmende Zeilen von „df1“ haben „NA“-Werte.

4. Vollständiger äußerer Join:

R




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

>

>

Ausgabe:

 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>

Der resultierende „full_join“-Datenrahmen enthält Folgendes: alle Zeilen von „df1“ und „df2“ . Nicht übereinstimmende Zeilen haben „NA“-Werte.

3. Verwendung des Pakets „data.table“:

Das Paket „data.table“ bietet einen effizienten und schnellen Ansatz zur Datenmanipulation. Es stellt die Funktion „merge()“ bereit. Es ähnelt dem in Basis R, ist jedoch auf Geschwindigkeit optimiert.

Syntax:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'X' Und 'Und' sind die Datenrahmen, die zusammengeführt werden sollen.
  • 'von' Gibt die gemeinsamen Spalten an, für die die Zusammenführung durchgeführt wird.
  • Zusätzliche Argumente wie 'alle.x', 'alle.y' Und 'alle' das die Art der Verknüpfung steuert.

Beispiel:

Installieren Sie die data.table-Bibliothek und erstellen Sie zwei Datentabellen, „dt1“ und „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))>

Objektklasse in Java

>

>

Sehen wir uns Beispiele für die Durchführung verschiedener Arten von Zusammenführungen mit der Funktion „merge()“ aus dem Paket „data.table“ an:

1. Innerer Join (Standardverhalten):

R




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

>

>

Ausgabe:

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

Der resultierende „inner_join“-Datenrahmen enthält nur die gemeinsame Zeilen, in denen „ID“ sowohl in „df1“ als auch in „df2“ vorhanden ist.

2. Linker Join( ‚all.x = TRUE‘):

R




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

>

>

Ausgabe:

 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>

Der resultierende Datenrahmen „left_join“ enthält: alle Nicht passend von „df1“ und das passende Zeilen aus „df2“. Nicht übereinstimmende Zeilen aus „df2“ haben „NA“-Werte.

3. Right Join( ‚all.y = TRUE‘):

R




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

>

>

Ausgabe:

 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>

Der resultierende Datenrahmen „right_join“ enthält: alle Nicht passend Zeilen aus „df2“ und die passenden Zeilen aus „df1“. Nicht übereinstimmende Zeilen aus „df1“ haben „NA“-Werte.

3. Vollständiger äußerer Join (‘all = TRUE’):

R


ml bis oz



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

>

>

Ausgabe:

 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>

Der resultierende „full_join“-Datenrahmen enthält Folgendes: alle Nicht passend Zeilen aus „df1“ und „df2“. Nicht übereinstimmende Zeilen haben „NA“-Werte.

Einer der Vorteile der Verwendung von „dplyr“ und „data.table“ besteht darin, dass sie im Vergleich zu Basis-R eine präzisere und lesbarere Syntax für die Datenmanipulation bieten.

Zusammenfassung:

  • „merge()“ bietet eine Allzweckfunktion zum Zusammenführen von Datenrahmen.
  • „dplyr“ konzentriert sich auf die Verschmelzung mit einem Fokus auf Lesbarkeit und Benutzerfreundlichkeit.
  • 'Daten. table‘ bietet eine schnelle und effiziente Möglichkeit, große Datensätze mit optimierter Leistung zu verarbeiten.
  • Wir sollten den Ansatz basierend auf der Komplexität der Aufgabe und den Leistungsanforderungen wählen.