The easiest way to move the data frame column to a specific position in R is by using the function relocate from package dplyr.
It is common for me that after creating a new column, I want that to move to a specific location in the R data frame. There is a way to reorder data frame columns, but that is a lot of code for this simple task.
For example, here is the Iris dataset.
head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species #1 5.1 3.5 1.4 0.2 setosa #2 4.9 3.0 1.4 0.2 setosa #3 4.7 3.2 1.3 0.2 setosa #4 4.6 3.1 1.5 0.2 setosa #5 5.0 3.6 1.4 0.2 setosa #6 5.4 3.9 1.7 0.4 setosa
I would like to move column Species to a first position. You can choose to specify a location in different ways – by using after or before arguments.
require(dplyr) iris <- iris %>% relocate(Species, .before = Sepal.Length) head(iris) # Species Sepal.Length Sepal.Width Petal.Length Petal.Width #1 setosa 5.1 3.5 1.4 0.2 #2 setosa 4.9 3.0 1.4 0.2 #3 setosa 4.7 3.2 1.3 0.2 #4 setosa 4.6 3.1 1.5 0.2 #5 setosa 5.0 3.6 1.4 0.2 #6 setosa 5.4 3.9 1.7 0.4
There is also possible to move a couple of columns to a specific position in R data frame.
iris <- iris %>% relocate(Petal.Width, Species, .after = Sepal.Length) head(iris) # Sepal.Length Petal.Width Species Sepal.Width Petal.Length #1 5.1 0.2 setosa 3.5 1.4 #2 4.9 0.2 setosa 3.0 1.4 #3 4.7 0.2 setosa 3.2 1.3 #4 4.6 0.2 setosa 3.1 1.5 #5 5.0 0.2 setosa 3.6 1.4 #6 5.4 0.4 setosa 3.9 1.7
Select range of columns in dplyr function
It is an advantage if you know how to select a range of columns in dplyr functions. If you know that you can use it also in relocate to move them to the necessary position.
head(iris %>% dplyr::select(Sepal.Width:Petal.Length)) # Sepal.Width Petal.Length #1 3.5 1.4 #2 3.0 1.4 #3 3.2 1.3 #4 3.1 1.5 #5 3.6 1.4 #6 3.9 1.7
Reorder range of columns in R
There is also possible to reorder a range of columns. You should only know how to select from one column to another in dplyr.
iris <- iris %>% relocate(Sepal.Width:Petal.Length, .before = Sepal.Length) head(iris) # Sepal.Width Petal.Length Sepal.Length Petal.Width Species #1 3.5 1.4 5.1 0.2 setosa #2 3.0 1.4 4.9 0.2 setosa #3 3.2 1.3 4.7 0.2 setosa #4 3.1 1.5 4.6 0.2 setosa #5 3.6 1.4 5.0 0.2 setosa #6 3.9 1.7 5.4 0.4 setosa
Check out my favorite RStudio tips and tricks. For example, how to quickly view a data frame from R script.
Leave a Reply