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.