There are two ways to quickly extract the month from a date in R:
Method 1: Use format()
df$month as.Date(df$date, format="%d/%m/%Y"),"%m")
Method 2: Use the lubridate package
library(lubridate)
df$month mdy(df$date))
This tutorial shows an example of how to use each of these methods in practice.
Method 1: Extract Month from Date Using format()
The following code shows how to extract the month from a date using the format() function combined with the “%m” argument:
#create data frame df frame(date=c("01/01/2021", "01/04/2021" , "01/09/2021"), sales=c(34, 36, 44)) #view data frame df date sales 1 01/01/2021 34 2 01/04/2021 36 3 01/09/2021 44 #create new variable that contains month df$month as.Date(df$date, format="%d/%m/%Y"),"%m") #view updated data frame df date sales month 1 01/01/2021 34 01 2 01/04/2021 36 04 3 01/09/2021 44 09
Note that this format() function works with a variety of date formats. You simply must specify the format:
#create data frame df frame(date=c("2021-01-01", "2021-01-04" , "2021-01-09"), sales=c(34, 36, 44)) #view data frame df date sales 1 2021-01-01 34 2 2021-01-04 36 3 2021-01-09 44 #create new variable that contains month df$monthas.Date(df$date, format="%Y-%m-%d"),"%m") #view updated data frame df date sales month 1 2021-01-01 34 01 2 2021-01-04 36 01 3 2021-01-09 44 01
Note: You can also use %B to extract the month as a string name (January) instead of a numeric value (01).
Method 2: Extract Month from Date Using Lubridate
We can also use functions from the lubridate package to quickly extract the month from a date:
library(lubridate) #create data frame df frame(date=c("01/01/2021", "01/04/2021" , "01/09/2021"), sales=c(34, 36, 44)) #view data frame df date sales 1 01/01/2021 34 2 01/04/2021 36 3 01/09/2021 44 #create new variable that contains month df$monthmdy(df$date)) #view updated data frame df date sales month 1 01/01/2021 34 1 2 01/04/2021 36 1 3 01/09/2021 44 1
Lubridate also works with a variety of date formats. You simply must specify the format:
#create data frame df frame(date=c("2021-01-01", "2021-01-04" , "2021-01-09"), sales=c(34, 36, 44)) #view data frame df date sales 1 2021-01-01 34 2 2021-01-04 36 3 2021-01-09 44 #create new variable that contains month df$month ymd(df$date)) #view updated data frame df date sales month 1 2021-01-01 34 1 2 2021-01-04 36 1 3 2021-01-09 44 1
Additional Resources
The following tutorials explain how to perform other common operations in R:
How to Extract Year from Date in R
How to Calculate Number of Months Between Dates in R