Demystifying Dates: Finding the Day of the Week in R with lubridate

[This article was first published on Steve's Data Tips and Tricks, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Introduction

Have you ever stared at a date in R and wondered, “What day of the week was this?!” Fear not, fellow data wranglers! Today, we embark on a journey to conquer this seemingly simple, yet surprisingly tricky, task. Buckle up, because we’re about to become date whisperers with the help of the lubridate package.

The Power of lubridate

R’s built-in date functions are decent, but lubridate takes things to a whole new level. Think of it as a Swiss Army knife for everything date-related. It offers a wider range of functions, clear syntax, and handles different date formats like a champ.

Unveiling the Mystery: Extracting the Day of the Week

There are two main approaches to finding the day of the week in lubridate:

Example 1: Using wday()

This function is your go-to for both numeric and character representations of the day. Let’s break it down:

library(lubridate)

# Sample date
date <- ymd("2024-02-09")

# Numeric day (Monday = 1, Sunday = 7)
numeric_day <- wday(date)
print(numeric_day)  # Output: 6 (Friday)
[1] 6
class(numeric_day)
[1] "numeric"
# Character day (full name)
full_day <- wday(date, label = TRUE)
print(full_day)  # Output: Friday
[1] Fri
Levels: Sun < Mon < Tue < Wed < Thu < Fri < Sat
class(full_day)
[1] "ordered" "factor" 
# Character day (abbreviated)
abbrev_day <- wday(date, label = TRUE, abbr = TRUE)
print(abbrev_day)  # Output: Fri
[1] Fri
Levels: Sun < Mon < Tue < Wed < Thu < Fri < Sat
class(abbrev_day)
[1] "ordered" "factor" 

Example 2. Using strftime()

This function offers more flexibility in formatting dates, including extracting the day of the week.

# Same date as before
date <- ymd("2024-02-09")
class(date)
[1] "Date"
# Day of the week (full name)
full_day <- strftime(date, format = "%A")
print(full_day)  # Output: Friday
[1] "Friday"
class(full_day)
[1] "character"
# Day of the week (abbreviated)
abbrev_day <- strftime(date, format = "%a")
print(abbrev_day)  # Output: Fri
[1] "Fri"
class(abbrev_day)
[1] "character"

Beyond the Basics: Customizing Your Output

Both wday() and strftime() offer options to personalize your results. For example, you can change the starting day of the week (default is Monday) or use different formatting codes for the day name.

Bonus Tip: Check out the lubridate documentation for more advanced options and functionalities!

Time to Play!

Now it’s your turn to experiment! Here are some ideas:

  • Find the day of your birthday in R.
  • Analyze historical data and see how weekdays affect specific variables.
  • Create a calendar visualization with the day of the week displayed.

Remember, the more you practice, the more comfortable you’ll become with manipulating dates in R. So, dive in, explore, and have fun!

P.S. Don’t forget to share your creations and questions in the comments below. The R community is always happy to help!

To leave a comment for the author, please follow the link and comment on their blog: Steve's Data Tips and Tricks.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)