Move a column to first position in a data frame

I would like to have the last column of the data frame moved to the start (as first column). How can I do it in R?

My data.frame has about a thousand columns to changing the order wont to. I just want to pick one column and "move it to the start".


Dplyr's select() approach

Moving the last column to the start:

new_df <- df %>%
  select(last_column_name, everything())

This is also valid for any column and any quantity:

new_df <- df %>%
  select(col_5, col_8, everything())

Example using mtcars data frame:

head(mtcars, n = 2)
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4

# Last column is 'carb'
new_df <- mtcars %>% select(carb, everything())

head(new_df, n = 2)
#                   carb  mpg cyl disp  hp drat    wt  qsec vs am gear
# Mazda RX4            4 21.0   6  160 110 3.90 2.620 16.46  0  1    4
# Mazda RX4 Wag        4 21.0   6  160 110 3.90 2.875 17.02  0  1    4

You can change the order of columns by adressing them in the new order by choosing them explicitly with data[,c(ORDER YOU WANT THEM TO BE IN)]

If you just want the last column to be first use: data[,c(ncol(data),1:(ncol(data)-1))]

> head(cars)
  speed dist
1     4    2
2     4   10
3     7    4
4     7   22
5     8   16
6     9   10

> head(cars[,c(2,1)])
  dist speed
1    2     4
2   10     4
3    4     7
4   22     7
5   16     8
6   10     9