I have a vector of date objects (yyyy-mm-dd) and I want to determine if any of them are on weekend or not. Is there a function that can determine this straightaway? 
I can use wday() in the lubridate package and then determine if returned value is 01 or 07, but anything else more straightforward?
x <- seq(Sys.Date()-10, Sys.Date(), by = 1) x[lubridate::wday(x) %in% c(1, 7)] wday() returns the day of the week as a decimal number or an ordered factor if label is TRUE .
Lubridate is an R package that makes it easier to work with dates and times. Below is a concise tour of some of the things lubridate can do for you. Lubridate was created by Garrett Grolemund and Hadley Wickham, and is now maintained by Vitalie Spinu.
lubridate: Make Dealing with Dates a Little EasierFunctions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), algebraic manipulation on date-time and time-span objects.
You can use the base R function weekdays().
x <- seq(Sys.Date() - 10, Sys.Date(), by = 1) weekdays(x, abbr = TRUE) # [1] "Wed" "Thu" "Fri" "Sat" "Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat" x[grepl("S(at|un)", weekdays(x))] # [1] "2014-10-11" "2014-10-12" "2014-10-18" As far as lubridate goes, wday() has a label argument.  When set to TRUE, the (abbreviated) day names are returned instead of numbers. Use the abbr argument to change to full names.
library(lubridate) wday(x, label = TRUE) # [1] Wed   Thurs Fri   Sat   Sun   Mon   Tues  Wed   Thurs Fri   Sat   # Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With