How to reorder Data Frame columns by column names and index in R (with examples)
In this article, you will learn how to reorder Data Frame columns by column names and indexes. To reorder Data Frame
columns, we will Data Frame index, subset()
, and dplyr select()
and relocate()
functions.
First, create a sample Data Frame
df <- data.frame(col1 = c("A", "B", "C"),
col2 = c(1, 2, 3),
col3 = c(0.1, 0.2, 0.3),
col4 = c("abc", "def", "xyz"))
df
# output
col1 col2 col3 col4
1 A 1 0.1 abc
2 B 2 0.2 def
3 C 3 0.3 xyz
Reorder columns by column indexes
The Data Frame df
contains four columns (col1
, col2
, col3
, col4
) and these column names need to be reordered
as (col3
, col1
, col2
, col4
).
You will use column indexes to reorder columns,
df <- df[, c(3, 1, 2, 4)]
df
# output
col3 col1 col2 col4
1 0.1 A 1 abc
2 0.2 B 2 def
3 0.3 C 3 xyz
You can also use subset
function to reorder columns by indexes,
subset(df, select=c(3, 1, 2, 4))
# output
col3 col1 col2 col4
1 0.1 A 1 abc
2 0.2 B 2 def
3 0.3 C 3 xyz
Reorder columns by column names
Here, You will use column names to reorder columns,
df <- df[, c("col3", "col1", "col2", "col4")]
df
# output
col3 col1 col2 col4
1 0.1 A 1 abc
2 0.2 B 2 def
3 0.3 C 3 xyz
You can also use dplyr select()
function to reorder column by column names,
library(dplyr)
df %>% select(col3, col1, col2, col4)
# output
col3 col1 col2 col4
1 0.1 A 1 abc
2 0.2 B 2 def
3 0.3 C 3 xyz
Reorder the column names in alphabetical order,
library(dplyr)
df %>% select(order(colnames(df)))
# output
col1 col2 col3 col4
1 A 1 0.1 abc
2 B 2 0.2 def
3 C 3 0.3 xyz
Reorder the column names in descending alphabetical order,
library(dplyr)
df %>% select(order(colnames(df), decreasing = T))
# output
col4 col3 col2 col1
1 abc 0.1 1 A
2 def 0.2 2 B
3 xyz 0.3 3 C
Reorder columns using dplyr relocate()
You can also use dplyr relocate()
function to reorder the columns of a Data Frame. relocate()
works with Data Frame,
tibble, or lazy Data Frame.
Move the last column to the first position,
library(dplyr)
df %>% relocate(col4)
# output
col4 col1 col2 col3
1 abc A 1 0.1
2 def B 2 0.2
3 xyz C 3 0.3
Move col4
after col1
,
df %>% relocate(col4, .after = col1)
# output
col1 col4 col2 col3
1 A abc 1 0.1
2 B def 2 0.2
3 C xyz 3 0.3
Move col4
before col3
,
df %>% relocate(col4, .before = col3)
# output
col1 col2 col4 col3
1 A 1 abc 0.1
2 B 2 def 0.2
3 C 3 xyz 0.3
Move col1
after last column in a Data Frame,
df %>% relocate(col1, .after = last_col())
# output
col2 col3 col4 col1
1 1 0.1 abc A
2 2 0.2 def B
3 3 0.3 xyz C
Enhance your skills with courses on R
- R Programming
- Data Science: Foundations using R Specialization
- Data Analysis with R Specialization
- Getting Started with Rstudio
If you have any questions, comments or recommendations, please email me at reneshbe@gmail.com
This work is licensed under a Creative Commons Attribution 4.0 International License
Some of the links on this page may be affiliate links, which means we may get an affiliate commission on a valid purchase. The retailer will pay the commission at no additional cost to you.