How to sort DataFrame (data.frame) in R? To sort data frame by column values use the order() function. By default, the sorting function performs in ASCENDING order and provides an option to sort in descending order. Also, by default, all NA values on the sorting column are kept at the last and you can change this behavior by using optional params.

**Key Points –**

- By default, sorts in ascending order.
- To sort by descending order use
`decreasing=TRUE`

. - You can also prefix the sorting variable with a minus sign to perform DESCENDING order.
- By default, sorting keeps all NA values on the sorting column at the end.
- To keep NA values first, use
`na.last=FALSE`

.

In this article, I will explain how to sort dataframe by using the above key points along with using the following methods.

- order() function from R base
- arrange() function from dplyr
- setorder() function from data.table

## 1. Quick Examples of Sorting DataFrame

Following are quick examples of how to sort DataFrame by column value in ascending and descending order in R programming.

```
# Sort Data Frame
df2 <- emp_df[order(df$price),]
# Sort by multiple columns
df2 <- df[order(df$price,df$name ),]
# Sort descending order
df2 <- df[order(df$price,decreasing=TRUE),]
# Sort by putting NA top
df2 <- df[order(df$price,decreasing=TRUE, na.last=FALSE),]
# Load dplyr library
library(dplyr)
df2 <- df %>% arrange(price)
df2 <- df %>% arrange(desc(price), desc(name) ))
# Load data.table library
library("data.table")
df2 <- setorder(df,price)
```

let’s create a R DataFrame

```
# Create Data Frame
df=data.frame(id=c(11,22,33,44,55),
name=c("spark","python","R","jsp","java"),
price=c(144,NA,321,567,567),
publish_date= as.Date(
c("2007-06-22", "2004-02-13", "2006-05-18",
"2010-09-02","2007-07-20"))
)
```

Yields below output.

## 2. Sort DataFrame in R using order() Function

The order() is a base function that is used to sort DataFrame in R based on column value, this function can also be used to sort vectors. This function takes the ordered column indices, so we have to use [] – index and inside this, we can apply the `order()`

function. Hence this will return the column.

### 2.1 Syntax of order() Function

Following is the syntax of the order() function.

```
# order() syntax
order(data, na.last = TRUE, decreasing = FALSE)
```

- data – vector or command separated vectors to sort on multiple columns.
- na.last – Default set to TRUE. Use FALSE to have all NA values put at the top. Use NA to remove.
- decreasing – Default set to FALSE. Use TRUE to order in descending.

### 2.2 Example of Sort DataFrame by Column Value

Let’s use the above-created data.frame and order() function to sort the R dataframe by column value in ascending order. The following example sorts the data by column price. Since the order() function takes the vector as an argument, use df$price as an argument. Note that in R, every column in DataFrame is a vector.

```
# Sort DataFrame
df2 <- df[order(df$price),]
df2
```

Yields below output.

## 4. By Multiple Columns

If you wanted to sort by multiple columns, pass all columns/variables you wanted to join as comma-separated values. When you perform a sort on multiple columns, it first orders on the first column and when it encounters tie values it breaks ties by next arguments.

```
# Sort by multiple columns
df2 <- df[order(df$price,df$name ),]
df2
```

Yields below output.

## 6. Sort DataFrame by Descending order

By default, sorting happens by ascending or increasing order, for string columns the sort happens in alphabetical order (A-Z). You can sort the data.frame in ascending order by using `decreasing=TRUE`

.

```
# Sort descending order
df2 <- df[order(df$price,decreasing=TRUE),]
df2
```

Yields below output.

When arranging the rows you can also prefix with a minus sign to perform sorting in decreasing order. This allows you to sort one column in ascending and another column in descending order.

## 7. Sort by having NA First

By default rows with NA on a sorting column will be put at the end in R, however, you can change this behavior and put rows with NA on top of the dataframe by using `na.last=FALSE`

.

```
# Sort by putting NA at first
df2 <- df[order(df$price,decreasing=TRUE, na.last=FALSE),]
df2
```

Yields below output.

## 8. Sort DataFrame using dplyr Package

arrange() function from dplyr package is also used to arrange the values in an ascending or descending order. To use arrange() function, you have to install dplyr first using install.packages(‘dplyr’) and load it using `library(dplyr)`

.

All functions in dplyr package take `data.frame`

as a first argument. When we use `dplyr`

package, we mostly use the infix operator `%>%`

from `magrittr`

, it passes the left-hand side of the operator to the first argument of the right-hand side of the operator. For example, `x %>% f(y)`

converted into `f(x, y)`

so the result from the left-hand side is then “piped” into the right-hand side.

```
# Load dplyr library
library(dplyr)
df2 <- df %>% arrange(price)
df2
```

To sort columns in descending order

```
# Sort descending order
df2 <- df %>% arrange(desc(price))
df2
```

## 9. Sort DataFrame using data.table Package

You can also use setorder() function from data.table to perform sorting on DataFrame columns. This function takes the data.frame object and column as input and return a new DataFrame after sorting by the specified column.

```
# Load data.table library
library("data.table")
df2 <- setorder(df,price)
df2
```

## Conclusion

In this article, I have explained how to use the order() function to sort the DataFrame by column values in R and how to sort by descending order, keeping all NA values first. Finally converted using arrange() function from dplyr package and setorder() function from data.table to order data.frame by specified columns.

Similarly, you can also sort by date column, when performing an order on a date make sure the column is in date type.

## Related Articles

- R join dataframe
- R rename column
- R remove column
- R delete rows
- Sort or Order List in R?
- Sort Table in R with Examples
- How to Sort by Date in R?
- R Sort DataFrame Rows by Column Value
- Order DataFrame by one descending and one ascending column in R
- R Sort Vector
- Reorder Column Names of DataFrame in R