0

I am looking for something like from this posting

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

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

However i am not trying to "add" but move, is there something similar like which will remove the original location of the file and keep the update

move_column(dataset, d = 4:8, .after = 2)
user35131
  • 1,105
  • 6
  • 18

2 Answers2

4

I like relocate in the dplyr package, which is part of tidyverse

df_new<- dataset %>%
   relocate(mycolumn, .after = the_other_column)
Joe Erinjeri
  • 1,200
  • 1
  • 7
  • 15
  • 1
    `tidyverse` is pretty huge at this point, it would be nice to point out which package this is from (`dplyr`, I think). – Gregor Thomas Mar 26 '21 at 20:32
1

A possible way:

move_column <- function(dataset, d, .after)
{
  remaining <- setdiff(1:ncol(dataset), c(d, 1:.after))
  dataset[,c(1:.after, d, remaining)]
}

head(mtcars)
#>                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
#> Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

head(move_column(mtcars, d = 4:5, .after = 2))
#>                mpg cyl  hp drat disp    wt  qsec vs am gear carb
#> Mazda RX4     21.0   6 110 3.90  160 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag 21.0   6 110 3.90  160 2.875 17.02  0  1    4    4
#> Datsun 710    22.8   4  93 3.85  108 2.320 18.61  1  1    4    1

Waldi
  • 39,242
  • 6
  • 30
  • 78