Tietojen yhdistäminen R:ssä käyttämällä R merge-, dplyr- tai data.table-toimintoa

R on ohjelmointikieli ja ohjelmistoympäristö, jota käytetään ensisijaisesti tilastolaskentaan ja grafiikkaan. Se tarjoaa laajan valikoiman työkaluja tietojen käsittelyyn, analysointiin, visualisointiin ja tilastolliseen mallinnukseen.

Tietojen yhdistäminen on tehtävä tietojen analysoinnissa ja tietojen käsittelyssä. R:ssä on useita tapoja yhdistää datakehyksiä käyttämällä 'yhdistää()' toiminto R-kannasta käyttämällä 'dplyr' paketti ja 'data.taulukko' paketti. Tässä opetusohjelmassa käytämme yllä olevia kolmea tapaa yhdistää tiedot käyttämällä R.

1. Yhdistä()-komentoa R-kannasta:

Merge()-funktio perus R:ssä auttaa meitä yhdistämään kaksi tai useampia tietokehystä yhteisten sarakkeiden perusteella. Se suorittaa erilaisia ​​liitoksia, kuten sisäliitoksen, vasemman liitoksen, oikean liitoksen ja täyden liitoksen.

Syntaksi:

merged_df  <- merge(x,y,by = 'common_column',..) 
  • 'x' ja 'ja' ovat tietokehykset, jotka haluat yhdistää.
  • 'tekijä' määrittää yleiset sarakkeet, joissa yhdistäminen suoritetaan.
  • Lisäargumentteja esim 'kaikki.x' , liittolainen' ja 'kaikki' hallitsee suoritettavan liitoksen tyyppiä.

Esimerkki:

Harkitse kahta datakehystä 'df1' ja '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))>

Katsotaanpa esimerkkejä erityyppisten liitosten suorittamisesta 'merge()'-funktiolla:

1. Sisäliitos (oletustoiminto):

R




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

Lähtö:

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

Tuloksena oleva 'inner_join' -tietokehys sisältää vain yleiset rivit, joissa 'ID' on läsnä sekä 'df1' ja 'df2'.

2. Vasen join( 'all.x=TRUE' ):

R




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

Lähtö:

 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 

Tuloksena oleva 'left_join' -tietokehys sisältää kaikki rivit kohteesta 'df1' ja vastaavat rivit tiedostosta 'df2'. Ei-vastaavilla riveillä df2:sta on NA-arvo

3. Liity oikealle ( 'all.y=TRUE' ):

R




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

Lähtö:

 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 

Tuloksena oleva 'right_join' -tietokehys sisältää kaikki rivit kohteesta 'df2' ja vastaavat rivit kohteesta 'df1'. Ei-vastaavilla riveillä df1:stä on NA-arvot.

4. Täysi ulkoliitos( 'kaikki = TOSI' )

R




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

Lähtö:

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 

Tuloksena oleva 'full_join' -tietokehys sisältää kaikki rivit sekä df1:stä että df2:sta. Ei-vastaavilla arvoilla on NA-arvot.

2. dplyr-paketin käyttäminen:

'dplyr'-paketti tarjoaa joukon toimintoja tietojen käsittelyyn, mukaan lukien tietokehysten yhdistäminen.

Ensisijainen toiminto dplyr:n yhdistämisessä on 'liittyä seuraan()', joka tukee erityyppisiä liitoksia.

Syntaksi:

merged_df <- join(x,y,by='common_column',type='type_of_join') 
  • 'x' ja 'ja' ovat yhdistettävät tietokehykset.
  • 'tekijä' määrittää yleiset sarakkeet, joille yhdistäminen suoritetaan
  • 'liittymistyyppi' voi olla 'sisä', 'vasen', 'oikea' tai 'täysi' liitoksen tyypin määrittämiseksi.

Esimerkki:
Asenna dplyr() pakkaa ja luo kaksi tietokehystä, 'df1' ja '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))>

Katsotaanpa esimerkkejä erityyppisten liitosten suorittamisesta 'dplyr'-funktioiden avulla:

1. Sisäinen liitos:

R




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

Lähtö:

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

Tuloksena oleva 'inner_join' -tietokehys sisältää vain yleiset rivit, joissa 'ID' on sekä 'df1':ssä että 'df2':ssa.

2. Vasen liitos:

R




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

Lähtö:

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 

Tuloksena oleva 'left_join' -tietokehys sisältää kaikki rivit kohteesta 'df1' ja vastaavat rivit kohteesta 'df2' . Ei-vastaavilla riveillä df2:sta on NA-arvot.

3. Oikea liitos:

R




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

Lähtö:

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 

Tuloksena oleva 'right_join' -tietokehys sisältää kaikki rivit kohteesta 'df2' ja vastaavat rivit kohteesta 'df1'. Vastaamattomilla df1-riveillä on NA-arvot.

4. Täysi ulkoinen liitos:

R




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

Lähtö:

 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 

Tuloksena oleva 'full_join' -tietokehys sisältää kaikki rivit sekä df1:stä että df2:sta . Ei-vastaavilla riveillä on NA-arvot.

3. Data.table-paketin käyttäminen:

Data.table-paketti tarjoaa tehokkaan ja nopean lähestymistavan tietojen käsittelyyn. Se tarjoaa 'merge()'-toiminnon. Se on samanlainen kuin perus-R, mutta optimoitu nopeudelle.

Syntaksi:

merged_dt  <- merge(x, y, by = 'common_column', ...) 
  • 'x' ja 'ja' ovat datakehykset, jotka on tarkoitus yhdistää.
  • 'tekijä' määrittää yleiset sarakkeet, joissa yhdistäminen suoritetaan.
  • Lisäargumentteja esim 'kaikki.x', 'kaikki.y' ja 'kaikki' joka hallitsee liitoksen tyyppiä.

Esimerkki:

Asenna data.table-kirjasto ja luo kaksi tietotaulukkoa, 'dt1' ja '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))>

Katsotaanpa esimerkkejä erityyppisten yhdistämisten suorittamisesta data.table-paketin 'merge()'-funktiolla:

1. Sisäliitos (oletuskäyttäytyminen):

R




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

Lähtö:

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

Tuloksena oleva 'inner_join' -tietokehys sisältää vain yleiset rivit, joissa 'ID' on sekä 'df1':ssä että 'df2':ssa.

2. Vasen liitos('all.x = TRUE'):

R




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

Lähtö:

 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 

Tuloksena oleva 'left_join' -tietokehys sisältää kaikki Ei täsmää kohteesta 'df1' ja vastaavat rivit kohdasta 'df2'. Ei-vastaavilla riveillä df2:sta on NA-arvot.

3. Oikea liitos ('all.y = TRUE'):

R




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

Lähtö:

 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 

Tuloksena oleva 'right_join' -tietokehys sisältää kaikki Ei täsmää rivit df2:sta ja vastaavat rivit df1:stä. Ei-vastaavilla riveillä df1:stä on NA-arvot.

3. Täysi ulkoinen liitos ('kaikki = TOSI'):

R




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

Lähtö:

 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 

Tuloksena oleva 'full_join' -tietokehys sisältää kaikki Ei täsmää rivit sekä df1:stä että df2:sta. Ei-vastaavilla riveillä on NA-arvot.

Yksi 'dplyr'- ja 'data.table'-käytön eduista on, että ne tarjoavat tiiviimmän ja luettavamman syntaksin tietojen käsittelyyn verrattuna perus-R:hen.

Yhteenveto:

  • 'merge()' tarjoaa yleiskäyttöisen toiminnon datakehysten yhdistämiseen.
  • 'dplyr' keskittyy yhdistämiseen keskittyen luettavuuteen ja helppokäyttöisyyteen.
  • 'tiedot. taulukko tarjoaa nopean ja tehokkaan tavan käsitellä suuria tietojoukkoja optimoidulla suorituskyvyllä.
  • Meidän tulisi valita lähestymistapa tehtävän monimutkaisuuden ja suoritusvaatimusten perusteella.