logo

Kā sapludināt datus programmā R, izmantojot R sapludināšanu, dplyr vai data.table

R ir programmēšanas valoda un programmatūras vide, ko galvenokārt izmanto statistikas skaitļošanai un grafikai. Tas nodrošina plašu rīku klāstu datu apstrādei, datu analīzei, datu vizualizācijai un statistiskai modelēšanai.

Datu apvienošana ir datu analīzes un datu apstrādes uzdevums. Programmā R ir dažādi veidi, kā sapludināt datu rāmjus, izmantojot 'apvienot()' funkcija no bāzes R, izmantojot 'dplyr' iepakojums un “data.tabula” iepakojums. Šajā apmācībā mēs izmantosim iepriekšminētos trīs veidus, kā apvienot datus, izmantojot R.



1. Izmantojot “merge()” no pamata R:

Funkcija merge() bāzes R palīdz mums apvienot divus vai vairākus datu rāmjus, pamatojoties uz kopīgām kolonnām. Tas veic dažāda veida savienojumus, piemēram, iekšējo savienojumu, kreiso savienojumu, labo savienojumu un pilno savienojumu.

Sintakse:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'x' un 'un' ir datu rāmji, kurus vēlaties sapludināt.
  • 'pēc' norāda kopējās kolonnas, kurās tiks veikta sapludināšana.
  • Papildu argumenti, piemēram 'visi.x' , sabiedrotais' un 'visi' kontrolēt veicamā savienojuma veidu.

Piemērs:



Apsveriet divus datu rāmjus “df1” un “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))>

>

>

Apskatīsim dažādu veidu savienojumu veikšanas piemērus, izmantojot funkciju ‘merge()’:

1. Iekšējā savienošana (noklusējuma darbība):

R




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

>

>

Izvade:

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

Iegūtais “inner_join” datu rāmis ietvers tikai kopējās rindas, kur 'ID' atrodas iekšā gan “df1”, gan “df2”.

2. Pa kreisi pievienoties( ‘all.x=TRUE’ ):

R




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

>

kreisais savienojums pret labo savienojumu
>

Izvade:

 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>

Iegūtais datu rāmis “left_join” ietvers visas rindas no 'df1' un atbilstošās rindas no “df2”. Neatbilstošām rindām no “df2” būs vērtība “NA”.

3. Pa labi pievienoties ( ‘all.y=TRUE’ ):

R




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

>

>

Izvade:

10 procenti no 60
 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>

Iegūtais datu rāmis “right_join” ietvers visas rindas no “df2” un atbilstošās rindas no “df1”. Neatbilstošajām rindām no “df1” būs “NA” vērtības.

4. Pilns ārējais savienojums ( 'visi = TRUE' )

R




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

>

>

Izvade:

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>

Iegūtais “full_join” datu rāmis tiks iekļauts visas rindas gan no “df1”, gan no “df2”. Neatbilstošām vērtībām būs “NA” vērtības.

2. Pakotnes “dplyr” izmantošana:

Pakete “dplyr” nodrošina datu apstrādes funkciju kopu, tostarp datu rāmju apvienošanu.

Galvenā funkcija sapludināšanai “dplyr” ir 'pievienoties ()', kas atbalsta dažāda veida savienojumus.

Sintakse:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'x' un 'un' ir datu rāmji, kas jāapvieno.
  • 'pēc' norāda kopējās kolonnas, kurās jāveic sapludināšana
  • “pievienošanās_veids” var būt 'iekšējais', 'pa kreisi', 'labais' vai 'pilns', lai norādītu savienojuma veidu.

Piemērs:
Instalējiet dplyr() iesaiņot un izveidot divus datu rāmjus, 'df1' un “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))>

>

>

Apskatīsim dažādu veidu savienojumu veikšanas piemērus, izmantojot 'dplyr' funkcijas:

1. Iekšējais savienojums:

virknē java

R




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

>

>

Izvade:

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

Iegūtais “inner_join” datu rāmis ietvers tikai bieži sastopamas rindas, kur “ID” ir gan “df1”, gan “df2”.

2. Kreisais savienojums:

R




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

>

>

Izvade:

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>

Iegūtais “left_join” datu rāmis tiks iekļauts visas rindas no “df1” un atbilstošās rindas no “df2” . Neatbilstošajām rindām no “df2” būs “NA” vērtības.

3. Pareiza pievienošanās:

R




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

>

>

Izvade:

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>

Iegūtais datu rāmis “right_join” ietvers visas rindas no “df2” un atbilstošās rindas no “df1”. Neatbilstošajām “df1” rindām būs “NA” vērtības.

4. Pilns ārējais savienojums:

R




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

>

>

Izvade:

 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>

Iegūtais “full_join” datu rāmis tiks iekļauts visas rindas gan no “df1”, gan no “df2” . Neatbilstošām rindām būs “NA” vērtības.

3. Pakotnes “data.table” izmantošana:

Pakete “data.table” piedāvā efektīvu un ātru pieeju datu manipulācijām. Tas nodrošina funkciju “apvienot ()”. Tas ir līdzīgs bāzes R esošajam, bet optimizēts ātrumam.

Sintakse:

merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'x' un 'un' ir datu rāmji, kas ir jāapvieno.
  • 'pēc' norāda kopējās kolonnas, kurās tiks veikta sapludināšana.
  • Papildu argumenti, piemēram 'all.x', 'all.y' un 'visi' kas kontrolē savienojuma veidu.

Piemērs:

Instalējiet bibliotēku data.table un izveidojiet divas datu tabulas — 'dt1' un '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))>

>

>

Apskatīsim dažādu veidu sapludināšanas piemērus, izmantojot pakotnes data.table funkciju “merge()”:

1. Iekšējā savienošana (noklusējuma darbība):

css fons

R




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

>

>

Izvade:

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

Iegūtais “inner_join” datu rāmis ietvers tikai bieži sastopamas rindas, kur “ID” ir gan “df1”, gan “df2”.

2. Kreisais savienojums ('all.x = TRUE'):

R




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

>

>

Izvade:

 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>

Iegūtais “left_join” datu rāmis tiks iekļauts visi Neatbilstošs no 'df1' un atbilstošās rindas no “df2”. Neatbilstošajām rindām no “df2” būs “NA” vērtības.

3. Labā pievienošanās ('all.y = TRUE'):

R




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

>

>

Izvade:

 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>

Iegūtais datu rāmis “right_join” ietvers visi Neatbilstošs rindas no “df2” un atbilstošās rindas no “df1”. Neatbilstošajām rindām no “df1” būs “NA” vērtības.

3. Pilns ārējais savienojums ('visi = TRUE'):

R




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

masīvs sakārtots java
>

>

Izvade:

 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>

Iegūtais “full_join” datu rāmis tiks iekļauts visi Neatbilstošs rindas gan no “df1”, gan no “df2”. Neatbilstošajām rindām būs “NA” vērtības.

Viena no “dplyr” un “data.table” izmantošanas priekšrocībām ir tā, ka tie nodrošina kodolīgāku un lasāmāku sintaksi datu manipulācijām, salīdzinot ar bāzes R.

Kopsavilkums:

  • ‘merge ()’ nodrošina vispārējas nozīmes funkciju datu kadru sapludināšanai.
  • “dplyr” koncentrējas uz sapludināšanu, koncentrējoties uz lasāmību un lietošanas ērtumu.
  • ‘dati. tabula” nodrošina ātru un efektīvu veidu, kā apstrādāt lielas datu kopas ar optimizētu veiktspēju.
  • Mums jāizvēlas pieeja, pamatojoties uz uzdevuma sarežģītību un izpildes prasībām.