When a single column header is split across cells, merge the
cells with merge_rows()
or merge_cols()
. E.g. if a column header "Mean
GDP" is split over two cells, where the top cell has the value "Mean" and the
bottom cell has the value "GDP", then merge_rows()
will combine them into a
single cell with the value "Mean GDP".
merge_rows()
keeps the top cell, and merge_cols()
keeps the left-most
cell. When there are several columns of headers, merge_rows()
aligns the
output cells so that they are all in the same row, and similarly
merge_cols()
aligns to the same column.
These functions apply only to cells with character values because it doesn't make sense to concatenate non-character values. Convert cell values to characters first if you need to merge non-character cells.
merge_rows(cells, rows, values, collapse = " ") merge_cols(cells, cols, values, collapse = " ")
cells | Data frame. The cells of a pivot table, usually the output of
|
---|---|
rows | The numbers of the rows to be merged. |
values | The column of |
collapse | A character string to separate the values of each cell. |
cols | The numbers of the columns to be merged. |
A data frame
x <- tibble::tribble( ~row, ~col, ~data_type, ~chr, 1, 1, "chr", "Katy", 2, 1, "chr", "Perry", 3, 1, "chr", "a", 4, 1, "chr", "b", 5, 1, "chr", "c", 2, 2, "chr", "Adele", 3, 2, "chr", "d", 4, 2, "chr", "e", 5, 2, "chr", "f", 1, 3, "chr", "Ariana", 2, 3, "chr", "Grande", 3, 3, "chr", "g", 4, 3, "chr", "h", 5, 3, "chr", "i" ) rectify(x)#> # A tibble: 5 x 4 #> `row/col` `1(A)` `2(B)` `3(C)` #> <dbl> <chr> <chr> <chr> #> 1 1 Katy NA Ariana #> 2 2 Perry Adele Grande #> 3 3 a d g #> 4 4 b e h #> 5 5 c f i#> # A tibble: 5 x 4 #> `row/col` `1(A)` `2(B)` `3(C)` #> <dbl> <chr> <chr> <chr> #> 1 1 Katy Perry Adele Ariana Grande #> 2 2 NA NA NA #> 3 3 a d g #> 4 4 b e h #> 5 5 c f i#> # A tibble: 5 x 4 #> `row/col` `1(A)` `2(B)` `3(C)` #> <dbl> <chr> <lgl> <chr> #> 1 1 Katy NA Ariana #> 2 2 Perry Adele NA Grande #> 3 3 a d NA g #> 4 4 b e NA h #> 5 5 c f NA i