De R-functie rbind() kan worden gebruikt om datasets met hetzelfde aantal kolommen te com­bi­ne­ren.

Wat is de functie van rbind() in R?

De R-functie rbind() is handig om gegevens regel voor regel te com­bi­ne­ren. Deze functie wordt vaak gebruikt om nieuwe in­for­ma­tie toe te voegen aan een bestaand ge­ge­vens­fra­me. Dit is handig als u uw gegevens re­gel­ma­tig bijwerkt en deze moet in­te­gre­ren in een bestaande ge­ge­vens­set.

R’s rbind() wordt ook gebruikt om twee da­taf­ra­mes met dezelfde structuur te com­bi­ne­ren, hetzij om een gron­di­ge­re analyse mogelijk te maken, hetzij om ver­schil­len­de delen van een dataset samen te brengen. Merk op dat rbind() efficiënt werkt voor kleinere datasets, maar dat pakketten zoals dplyr betere pres­ta­ties leveren voor grotere datasets.

Wat is de syntaxis van R’s rbind()?

U kunt zoveel da­taf­ra­mes invoeren als u wilt in rbind() en deze laten com­bi­ne­ren. Zorg er wel voor dat alle da­taf­ra­mes hetzelfde aantal kolommen en dezelfde ko­lom­na­men hebben.

rbind(data.frame1, data.frame2, ...)
R

De ar­gu­men­ten data.frame1, data.frame2 enzovoort staan voor de ge­ge­vens­fra­mes of lijsten met ge­ge­vens­fra­mes die regel voor regel worden gekoppeld.

Voor­beel­den van het gebruik van rbind() in R

Hieronder bekijken we enkele voor­beel­den van hoe je de functie rbind() van R kunt gebruiken. Eerst maken we een dataframe met twee kolommen:

#creating data frame 1
names<-c("Deborah","Tom","Matt","Laura","Rebecca")
status<-c("nurse","doctor","nurse","doctor","nurse")
df1<-data.frame(names, status)
df1
R

De uitvoer ziet er als volgt uit:

names status
1  Deborah     nurse
2  Tom   doctor
3  Matt      nurse
4  Laura   doctor
5  Rebecca     nurse
R

Ver­vol­gens de­fi­ni­ë­ren we een tweede ge­ge­vens­fra­me met hetzelfde aantal kolommen:

#creating data frame 2
names<-c("Eva","John")
status<-c("doctor","nurse")
df2<-data.frame(names, status)
df2
R

Uitvoer:

names    status
 1  Eva            doctor 
2   John          nurse
R

Nu kunnen we de twee ge­ge­vens­fra­mes met elkaar com­bi­ne­ren:

#binding rows of df1 and df2
rbind(df1,df2)
R

Het resultaat ziet er als volgt uit:

names     status
1  Deborah  nurse
2  Tom           doctor    
3  Matt           nurse      
4  Laura        doctor    
5  Rebecca  nurse     
6  Eva             doctor   
7  John           nurse
R

Wat gebeurt er als ge­ge­vens­fra­mes een ver­schil­lend aantal kolommen hebben?

Hieronder laten we zien wat er gebeurt als je twee da­taf­ra­mes met een ver­schil­lend aantal kolommen probeert te com­bi­ne­ren.

Laten we eerst nogmaals een ge­ge­vens­fra­me met twee kolommen maken:

#creating data frame 1
names<-c("Deborah","Tom","Matt","Laura","Rebecca")
status<-c("nurse","doctor","nurse","doctor","nurse")
df1<-data.frame(names, status)
df1
R

Uitvoer:

names     status
1  Deborah nurse
2  Tom         doctor
3  Matt         nurse
4  Laura        doctor
5 Rebecca nurse
R

Nu maken we een ge­ge­vens­fra­me met drie kolommen:

#creating data frame 2
names<-c("Eva","John")
status<-c("doctor","nurse")
age<-c("52","38")
df2<-data.frame(names, status, age)
df2
R

Uitvoer:

names    status    age
1  Eva        doctor    52
2  John      nurse      38
R

Wanneer we rbind() gebruiken om de twee ge­ge­vens­fra­mes te com­bi­ne­ren, krijgen we de volgende fout­mel­ding:

rbind(df1,df2)
Error in rbind(deparse.level, ...) :
    numbers of columns of arguments do not match
R

De fout­mel­ding geeft aan dat we R’s rbind() niet kunnen gebruiken om de twee da­taf­ra­mes te com­bi­ne­ren, omdat ze een ver­schil­lend aantal kolommen hebben. We kunnen echter wel bind_rows() uit het dplr gebruiken.

Hoe combineer je da­taf­ra­mes met een ver­schil­lend aantal kolommen?

De ge­ge­vens­fra­mes uit het bo­ven­staan­de voorbeeld kunnen eenvoudig worden ge­com­bi­neerd met bind_rows().

#install dplyr
install.packages('dplyr')
#import libraries
library(dplyr)
#bind rows
bind_rows(df1,df2)
R

De uitvoer ziet er als volgt uit:

names    status            age
1  Deborah nurse      <NA>
2  Tom          doctor     <NA>
3  Matt         nurse       <NA>
4  Laura        doctor     <NA>
5  Rebecca   nurse       <NA>
6  Eva            doctor     52
7  John         nurse       38
R

bind_rows() com­bi­neert de twee da­taf­ra­mes met succes. Lege velden worden ge­mar­keerd met <NA>. De functie is een goed al­ter­na­tief voor rbind() in R als u da­taf­ra­mes met een ver­schil­lend aantal kolommen moet com­bi­ne­ren.

Tip

Wilt u meer weten over het weergeven en bewerken van datasets in R? Bekijk dan onze tutorials over R plot en R paste.

Ga naar hoofdmenu