Add (insert) a column between two columns in a data.frame

Mark picture Mark · Nov 21, 2012 · Viewed 122.4k times · Source

I have a data frame that has columns a, b, and c. I'd like to add a new column d between b and c.

I know I could just add d at the end by using cbind but how can I insert it in between two columns?

Answer

Kevin Zarca picture Kevin Zarca · Nov 24, 2016

I would suggest you to use the function add_column() from the tibble package.

library(tibble)
dataset <- data.frame(a = 1:5, b = 2:6, c=3:7)
add_column(dataset, d = 4:8, .after = 2)

Note that you can use column names instead of column index :

add_column(dataset, d = 4:8, .after = "b")

Or use argument .before instead of .after if more convenient.

add_column(dataset, d = 4:8, .before = "c")