R este un limbaj de programare și un mediu software care este utilizat în principal pentru calculul statistic și grafică. Oferă o gamă largă de instrumente pentru manipularea datelor, analiza datelor, vizualizarea datelor și modelarea statistică.
Îmbinarea datelor este o sarcină în analiza și manipularea datelor. În R există diferite moduri de a îmbina cadrele de date, folosind 'combina()' funcția de la baza R, folosind „dplyr” pachet, iar 'tabel de date' pachet. În acest tutorial, vom folosi cele trei moduri de mai sus de a îmbina datele folosind R.
1. Folosind „merge()” din baza R:
Funcția merge() din baza R ne ajută să combinăm două sau mai multe cadre de date pe baza coloanelor comune. Efectuează diverse tipuri de îmbinări, cum ar fi îmbinarea interioară, îmbinarea stângă, îmbinarea la dreapta și îmbinarea completă.
Sintaxă:
merged_df <- merge(x,y,by = 'common_column',..)>
- 'X' și 'și' sunt cadrele de date pe care doriți să le îmbinați.
- 'de' specifică coloanele comune pe care se va efectua îmbinarea.
- Argumente suplimentare precum „all.x” , aliat' și 'toate' controlează tipul de îmbinare care urmează să fie efectuată.
Exemplu:
Luați în considerare două cadre de date „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))> |
>
>
Să vedem exemple de efectuare a diferitelor tipuri de îmbinări folosind funcția „merge()”:
1. Îmbinare interioară (comportament implicit):
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Ieșire:
ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000>
Cadrul de date „inner_join” rezultat va include numai rândurile comune unde „ID” este prezent în atât „df1” cât și „df2”.
2. Alăturare stânga ( „all.x=TRUE” ):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
bash șir împărțit după delimitator
>
Ieșire:
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>
Cadrul de date „left_join” rezultat va include toate rândurile de la „df1” și rândurile care se potrivesc din „df2”. Rândurile care nu se potrivesc din „df2” vor avea o valoare „NA”.
3. Alăturați-vă corect ( „all.y=TRUE” ):
R
avl rotația arborelui
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Ieșire:
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>
Cadrul de date „right_join” rezultat va include toate rândurile de la „df2” și rândurile potrivite din „df1”. Rândurile care nu se potrivesc din „df1” vor avea valori „NA”.
4. Îmbinare exterioară completă ( „toate = ADEVĂRAT” )
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Ieșire:
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>
Cadrul de date „full_join” rezultat va include toate rândurile atât de la „df1” cât și de la „df2”. Valorile care nu se potrivesc vor avea valori „NA”.
2. Folosind pachetul „dplyr”:
Pachetul „dplyr” oferă un set de funcții pentru manipularea datelor, inclusiv îmbinarea cadrelor de date.
Funcția principală pentru îmbinarea în „dplyr” este 'a te alatura()', care suportă diverse tipuri de îmbinări.
Sintaxă:
merged_df<- join(x,y,by='common_column',type='type_of_join')>
- 'X' și 'și' sunt cadrele de date care trebuie îmbinate.
- 'de' specifică coloanele comune pe care urmează să fie efectuată îmbinarea
- „tip_de_alăturare” poate fi „interior”, „stânga”, „dreapta” sau „complet” pentru a specifica tipul de îmbinare.
Exemplu:
Instalați dplyr() împachetați și creați două cadre de date, „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))> |
>
>
Să vedem exemple de efectuare a diferitelor tipuri de îmbinări folosind funcțiile „dplyr”:
1. Îmbinare interioară:
vârsta mia khalifa
R
inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Ieșire:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
Cadrul de date „inner_join” rezultat va include numai rânduri comune în care „ID” este prezent atât în „df1” cât și în „df2”.
2. Alăturare stânga:
R
left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)> |
>
>
Ieșire:
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>
Cadrul de date „left_join” rezultat va include toate rândurile de la „df1” si rânduri care se potrivesc din „df2” . Rândurile care nu se potrivesc din „df2” vor avea valori „NA”.
3. Alăturați-vă corect:
R
right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)> |
>
>
Ieșire:
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>
Cadrul de date „right_join” rezultat va include toate rândurile de la „df2” si rânduri care se potrivesc din „df1”. Rândurile care nu se potrivesc ale „df1” vor avea valori „NA”.
4. Îmbinare exterioară completă:
R
full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)> |
>
>
Ieșire:
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>
Cadrul de date „full_join” rezultat va include toate rândurile de la „df1” și „df2” . Rândurile care nu se potrivesc vor avea valori „NA”.
3. Folosind pachetul „data.table”:
Pachetul „data.table” oferă o abordare eficientă și rapidă a manipulării datelor. Oferă funcția „merge()”. Este similar cu cel din baza R dar optimizat pentru viteza.
Sintaxă:
merged_dt <- merge(x, y, by = 'common_column', ...)>
- 'X' și 'și' sunt cadrele de date care urmează să fie îmbinate.
- 'de' specifică coloanele comune pe care se va efectua îmbinarea.
- Argumente suplimentare precum „all.x”, „all.y” și 'toate' care controlează tipul de unire.
Exemplu:
Instalați biblioteca data.table și creați două tabele de date, „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))> |
>
>
Să vedem exemple de realizare a diferitelor tipuri de îmbinări folosind funcția „merge()” din pachetul „data.table”:
1. Inner join (comportament implicit):
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
cuvânt cheie final în java
>
Ieșire:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
Cadrul de date „inner_join” rezultat va include numai rânduri comune în care „ID” este prezent atât în „df1” cât și în „df2”.
2. Left join(‘all.x = TRUE’):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
>
Ieșire:
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>
Cadrul de date „left_join” rezultat va include toate Nepotrivire din „df1” si rânduri care se potrivesc din „df2”. Rândurile care nu se potrivesc din „df2” vor avea valori „NA”.
3. Alăturare dreapta („all.y = TRUE”):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Ieșire:
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>
Cadrul de date „right_join” rezultat va include toate Nepotrivire rândurile din „df2” și rândurile potrivite din „df1”. Rândurile care nu se potrivesc din „df1” vor avea valori „NA”.
npm curat cache
3. Unire exterioară completă („toate = ADEVĂRAT”):
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Ieșire:
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>
Cadrul de date „full_join” rezultat va include toate Nepotrivire rânduri din ambele „df1” și „df2”. Rândurile care nu se potrivesc vor avea valori „NA”.
Unul dintre avantajele utilizării „dplyr” și „data.table” este că oferă o sintaxă mai concisă și mai lizibilă pentru manipularea datelor în comparație cu baza R.
Rezumat:
- „merge()” oferă o funcție de uz general pentru îmbinarea cadrelor de date.
- „dplyr” se concentrează pe fuziune cu accent pe lizibilitate și ușurință în utilizare.
- 'date. table’ oferă o modalitate rapidă și eficientă de a gestiona seturi mari de date cu performanțe optimizate.
- Ar trebui să alegem abordarea pe baza complexității sarcinii și a cerințelor de realizare.