logo

Jak scalić dane w R za pomocą R merge, dplyr lub data.table

R to język programowania i środowisko oprogramowania używane głównie do obliczeń statystycznych i grafiki. Zapewnia szeroką gamę narzędzi do manipulacji danymi, analizy danych, wizualizacji danych i modelowania statystycznego.

Łączenie danych to zadanie związane z analizą i manipulacją danymi. W R istnieją różne sposoby łączenia ramek danych przy użyciu metody 'łączyć()' funkcję o podstawie R, używając „dplyr” pakiet i 'Tabela danych' pakiet. W tym samouczku użyjemy powyższych trzech sposobów łączenia danych za pomocą języka R.



1. Używanie funkcji „merge()” z bazy R:

Funkcja merge() w bazie R pomaga nam połączyć dwie lub więcej ramek danych w oparciu o wspólne kolumny. Wykonuje różne typy złączeń, takie jak łączenie wewnętrzne, łączenie lewe, łączenie prawe i łączenie pełne.

Składnia:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'X' I 'I' to ramki danych, które chcesz scalić.
  • 'przez' określa wspólne kolumny, na których zostanie wykonane scalanie.
  • Dodatkowe argumenty, np „wszystko.x” , sprzymierzyć' I 'Wszystko' kontrolować typ łączenia, które ma zostać wykonane.

Przykład:



Rozważ dwie ramki danych „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))>

>

>

Zobaczmy przykłady wykonywania różnych typów złączeń za pomocą funkcji „merge()”:

1. Sprzężenie wewnętrzne (zachowanie domyślne):

R




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

>

>

Wyjście:

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

Wynikowa ramka danych „inner_join” będzie zawierać tylko wspólne wiersze gdzie 'ID' jest obecny w zarówno „df1”, jak i „df2”.

2. Lewe połączenie ( „wszystko.x=PRAWDA” ):

R




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

>

ciąg znaków w metodach Java
>

Wyjście:

 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>

Wynikowa ramka danych „left_join” będzie zawierać wszystkie wiersze z „df1” i pasujące wiersze z „df2”. Niepasujące wiersze z „df2” będą miały wartość „NA”.

3. Prawe połączenie ( „wszystko.y=PRAWDA” ):

R




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

>

>

Wyjście:

 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>

Wynikowa ramka danych „right_join” będzie zawierać wszystkie wiersze z „df2” i pasujące wiersze z „df1”. Niepasujące wiersze z „df1” będą miały wartości „NA”.

4. Pełne połączenie zewnętrzne ( „wszystko = PRAWDA” )

R




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

>

>

Wyjście:

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>

Wynikowa ramka danych „full_join” będzie zawierać wszystkie wiersze zarówno z „df1”, jak i „df2”. Niepasujące wartości będą miały wartości „NA”.

2. Korzystanie z pakietu „dplyr”:

Pakiet „dplyr” udostępnia zestaw funkcji służących do manipulacji danymi, w tym do łączenia ramek danych.

Podstawową funkcją łączenia w „dplyr” jest 'dołączyć()', który obsługuje różne typy złączeń.

Składnia:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'X' I 'I' to ramki danych, które mają zostać scalone.
  • 'przez' określa wspólne kolumny, na których ma zostać wykonane scalanie
  • „typ_dołączenia” może być „wewnętrzny”, „lewy”, „prawy” lub „pełny”, aby określić typ połączenia.

Przykład:
Zainstaluj dplyr() spakuj i utwórz dwie ramki danych, „df1” I „df2”.

R




mylivecricket w grze w krykieta na żywo

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

>

>

Zobaczmy przykłady wykonywania różnych typów złączeń przy użyciu funkcji „dplyr”:

1. Połączenie wewnętrzne:

shloka mehta

R




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

>

>

Wyjście:

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

Wynikowa ramka danych „inner_join” będzie zawierać tylko wspólne wiersze, w których „ID” występuje zarówno w „df1”, jak i „df2”.

2. Lewe dołączenie:

R




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

>

>

Wyjście:

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>

Wynikowa ramka danych „left_join” będzie zawierać wszystkie wiersze z „df1” i pasujące wiersze z „df2” . Niepasujące wiersze z „df2” będą miały wartości „NA”.

3. Prawe połączenie:

R




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

>

>

Wyjście:

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>

Wynikowa ramka danych „right_join” będzie zawierać wszystkie wiersze z „df2” i pasujące wiersze z „df1”. Niepasujące wiersze „df1” będą miały wartości „NA”.

4. Pełne złączenie zewnętrzne:

R

rodzaje drzew binarnych




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

>

>

Wyjście:

 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>

Wynikowa ramka danych „full_join” będzie zawierać wszystkie wiersze zarówno z „df1”, jak i „df2” . Niepasujące wiersze będą miały wartości „NA”.

3. Korzystanie z pakietu „data.table”:

Pakiet „data.table” oferuje wydajne i szybkie podejście do manipulacji danymi. Zapewnia funkcję „scal ()”. Jest podobny do tego w bazie R, ale zoptymalizowany pod kątem szybkości.

Składnia:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'X' I 'I' to ramki danych, które mają zostać scalone.
  • 'przez' określa wspólne kolumny, na których zostanie wykonane scalanie.
  • Dodatkowe argumenty, np „wszystko.x”, „wszystko.y” I 'Wszystko' który kontroluje typ połączenia.

Przykład:

Zainstaluj bibliotekę data.table i utwórz dwie tabele danych, „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))>

>

>

Zobaczmy przykłady wykonania różnego rodzaju scalania za pomocą funkcji „merge()” z pakietu „data.table”:

1. Sprzężenie wewnętrzne (zachowanie domyślne):

R




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

>

>

Wyjście:

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

Wynikowa ramka danych „inner_join” będzie zawierać tylko wspólne wiersze, w których „ID” występuje zarówno w „df1”, jak i „df2”.

2. Lewe połączenie(’all.x = TRUE’):

R




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

>

>

Wyjście:

 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>

Wynikowa ramka danych „left_join” będzie zawierać Wszystko Niepasujące z „df1” i pasujące wiersze z „df2”. Niepasujące wiersze z „df2” będą miały wartości „NA”.

3. Prawe połączenie („all.y = TRUE”):

R


Podciąg ciągu Java



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

>

>

Wyjście:

 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>

Wynikowa ramka danych „right_join” będzie zawierać Wszystko Niepasujące wiersze z „df2” i pasujące wiersze z „df1”. Niepasujące wiersze z „df1” będą miały wartości „NA”.

3. Pełne złączenie zewnętrzne („wszystko = PRAWDA”):

R




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

>

>

Wyjście:

 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>

Wynikowa ramka danych „full_join” będzie zawierać Wszystko Niepasujące wiersze zarówno z „df1”, jak i „df2”. Niepasujące wiersze będą miały wartości „NA”.

Jedną z zalet używania „dplyr” i „data.table” jest to, że zapewniają one bardziej zwięzłą i czytelną składnię do manipulacji danymi w porównaniu z podstawowym R.

Streszczenie:

  • „merge()” udostępnia funkcję ogólnego przeznaczenia służącą do łączenia ramek danych.
  • „dplyr” koncentruje się na łączeniu, kładąc nacisk na czytelność i łatwość użycia.
  • 'dane. table” zapewnia szybki i skuteczny sposób obsługi dużych zbiorów danych przy zoptymalizowanej wydajności.
  • Podejście powinniśmy wybierać kierując się złożonością zadania i wymaganiami wykonawczymi.