# How to Sort a Data Frame by Date in R (With Examples)

There are two easy ways to sort a data frame by date in R:

Method 1: User order() from base R

```#sort from least recent to most recent
df[order(as.Date(df\$date, format="%m/%d/%Y")),]

#sort from most recent to least recent
df[rev(order(as.Date(df\$date, format="%m/%d/%Y"))),]
```

Method 2: Use functions from the lubridate and dplyr packages

```library(lubridate)
library(dplyr)

#sort from least recent to most recent
df %>% arrange(mdy(df\$date))

#sort from most recent to least recent
df %>% arrange(desc(mdy(df\$date)))
```

This tutorial shows an example of how to use each of these methods in practice.

### Method 1: Use order() from base R

The most basic way to sort a data frame by a date variable in R is to use the order() function from base R. The following code shows how to use this function in practice:

```#create and view data frame
df <- data.frame(date=c('10/30/2021', '11/18/2021', '11/13/2021', '11/19/2021'),
sales=c(3, 15, 14, 9))
df

date sales
1 10/30/2021     3
2 11/18/2021    15
3 11/13/2021    14
4 11/19/2021     9

#sort from least recent to most recent
df[order(as.Date(df\$date, format="%m/%d/%Y")),]

date sales
1 10/30/2021     3
3 11/13/2021    14
2 11/18/2021    15
4 11/19/2021     9
#sort from most recent to least recent
df[rev(order(as.Date(df\$date, format="%m/%d/%Y"))),]

date sales
4 11/19/2021     9
2 11/18/2021    15
3 11/13/2021    14
1 10/30/2021     3
```

### Method 2: Use lubridate and dplyr

A faster way to sort a data frame by a date variable is to use functions from the lubridate and dplyr packages. The following code shows how to use these functions in practice:

```#create and view data frame
df <- data.frame(date=c('10/30/2021', '11/18/2021', '11/13/2021', '11/19/2021'),
sales=c(3, 15, 14, 9))
df

date sales
1 10/30/2021     3
2 11/18/2021    15
3 11/13/2021    14
4 11/19/2021     9

#sort from least recent to most recent
df %>% arrange(mdy(df\$date))

date sales
1 10/30/2021     3
2 11/13/2021    14
3 11/18/2021    15
4 11/19/2021     9

#sort from most recent to least recent
df %>% arrange(desc(mdy(df\$date)))

date sales
1 11/19/2021     9
2 11/18/2021    15
3 11/13/2021    14
4 10/30/2021     3```

Note that we used lubridate to specify the date as a mdy() format, but you can refer to this cheat sheet to see other date formats if your date happens to be in a different format.