num_tbl <- tibble::tibble(x = 1:3, y = 4:6, z = 7:9)
num_tbl_2 <- tibble::tibble(aa = 11:13, ab = 14:16, ac = 17:19)
num_tbl_3 <- tibble::tibble(x = 4:6, y = 7:9, z = 10:12)Bind tibbles
Tibbles can be bound together to create a new tibble with:
dplyr::bind_cols(): Bind tibbles side by sidedplyr::bind_rows(): Bind tibbles on top of each other
Create example tibbles
Before demonstrating various examples we will create a few tibbles.
Bind by columns
Bind 2 or more tibbles by columns. In other words you will end up with more columns and the same amount of rows.
We will bind the two following tibbles by columns.
Note: The two tibbles must have the same amount of rows. Additionally, they should have completely unique column names compared to each other.
num_tbl# A tibble: 3 × 3
x y z
<int> <int> <int>
1 1 4 7
2 2 5 8
3 3 6 9
num_tbl_2# A tibble: 3 × 3
aa ab ac
<int> <int> <int>
1 11 14 17
2 12 15 18
3 13 16 19
Column bind.
num_tbl_col_bound <- dplyr::bind_cols(num_tbl, num_tbl_2)
num_tbl_col_bound# A tibble: 3 × 6
x y z aa ab ac
<int> <int> <int> <int> <int> <int>
1 1 4 7 11 14 17
2 2 5 8 12 15 18
3 3 6 9 13 16 19
Bind by rows
Bind 2 or more tibbles by rows with dplyr::bind_rows(). In other words you will end up with more rows and the same amount of columns.
We will bind the two following tibbles by rows.
Note: The two tibbles must have the same amount of columns. Additionally, they should have the same column names.
num_tbl# A tibble: 3 × 3
x y z
<int> <int> <int>
1 1 4 7
2 2 5 8
3 3 6 9
num_tbl_3# A tibble: 3 × 3
x y z
<int> <int> <int>
1 4 7 10
2 5 8 11
3 6 9 12
Row bind.
num_tbl_row_bound <- dplyr::bind_rows(num_tbl, num_tbl_3)
num_tbl_row_bound# A tibble: 6 × 3
x y z
<int> <int> <int>
1 1 4 7
2 2 5 8
3 3 6 9
4 4 7 10
5 5 8 11
6 6 9 12