Rbind in R | Row Bind With Examples

Continuing our discussion on how to merge data frames in R, our attention turns to rbind – the row bind function. Rbind can be used to append two dataframes with the same number of columns together.

We will build on the example we started with cbind, the column bind function. At the end of that session, we had a lovely dataframe which contained manufacturing data for a group of employees. Suppose we were able to find data tracking several additional operators? How would we append this to our existing dataframe? Rbind to the rescue!

Rbind Example

We are going to pick up with the end of our cbind example:

# data for r rbind example
blended <- cbind(blended, sourceofhire)

> blended
opid units operator found
1 Op01 23 Larry Movie
2 Op02 43 Curly Movie
3 Op03 21 Moe Movie
4 Op04 32 Jack Book
5 Op05 13 Jill Book
6 Op06 12 Kim TV
7 Op07 32 Perry TV

Suppose our IT team realizes that we missed four operators in another building. They send over the information in an email and we can cobble together an appropriate data frame.

# additional rows for r rbind example
new <- cbind(opid = c("ex01","ex02","ex03","ex04"),
units = c(52,23,32,54),
operator = c("nancy", "drew","hardy","boys"),
found = c("mystery","mystery","mystery","mystery"))

> new
opid units operator found
1 Ex01 52 Nancy mystery
2 Ex02 23 Drew mystery
3 Ex03 32 Hardy mystery
4 Ex04 54 Boys mystery

And we can use rbind to join the two.

# rbind in r - combine 2 names to make 1
total <- rbind(blended, new)

> total
opid units operator found
1 Op01 23 Larry Movie
2 Op02 43 Curly Movie
3 Op03 21 Moe Movie
4 Op04 32 Jack Book
5 Op05 13 Jill Book
6 Op06 12 Kim TV
7 Op07 32 Perry TV
8 Ex01 52 Nancy mystery
9 Ex02 23 Drew mystery
10 Ex03 32 Hardy mystery
11 Ex04 54 Boys mystery

You can also use this to append multiple tables.

# rbind multiple data frames in r
total <- rbind(blended, new,new2,new3)

One gotcha. In order to use the rbind function, the two data frames need to have the same number of columns. Otherwise you will get the following lovely error:

> rbind(blended, names)

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

For more complicated joins, take a look at our article about merging dataframes.