Skip to contents

On those occasions where you need to move columns this way or that way, we can make use of the cols_move() function. While it's true that the movement of columns can be done upstream of gt, it is much easier and less error prone to use the function provided here. The movement procedure here takes one or more specified columns (in the columns argument) and places them to the right of a different column (the after argument). The ordering of the columns to be moved is preserved, as is the ordering of all other columns in the table.


cols_move(data, columns, after)



A table object that is created using the gt() function.


The column names to move to as a group to a different position. The order of the remaining columns will be preserved.


A column name used to anchor the insertion of the moved columns. All of the moved columns will be placed to the right of this column.


An object of class gt_tbl.


The columns supplied in columns must all exist in the table and none of them can be in the after argument. The after column must also exist and only one column should be provided here. If you need to place one or columns at the beginning of the column series, the cols_move_to_start() function should be used. Similarly, if those columns to move should be placed at the end of the column series then use cols_move_to_end().


Use countrypops to create a gt table. With the remaining columns, position population after country_name with the cols_move() function.

countrypops %>%
  dplyr::select(-contains("code")) %>%
  dplyr::filter(country_name == "Mongolia") %>%
  tail(5) %>%
  gt() %>%
    columns = population,
    after = country_name

This image of a table was generated from the first code example in the `cols_move()` help file.

Function ID