On Sep 2, 2011, at 10:35 AM, Ben qant wrote:

> Hello,
> 
> I'm attempting to return the date (in form '%Y-%m-%d') of the Monday
> previous to the current date. For example: since it is 2011-09-02 today, I
> would expect 2011-08-29 to be the return value.
> 
> I found the following in:
> http://www.mail-archive.com/r-help@r-project.org/msg144184.html
> 
> Start quote from link:
> prevmonday <- function(x) 7 * floor(as.numeric(x-1+4) / 7) + as.Date(1-4)
> 
> For example,
> 
>> prevmonday(Sys.Date())
> [1] "2011-08-15"
>> prevmonday(prevmonday(Sys.Date()))
> [1] "2011-08-15"
> 
> End quote from link.
> 
> But when I do it I get:
>> prevmonday <- function(x) 7 * floor(as.numeric(x-1+4) / 7) + as.Date(1-4)
>> prevmonday(Sys.Date())
> Error in as.Date.numeric(1 - 4) : 'origin' must be supplied
> 
> I've tried setting the 'origin' argument in as.Date() in different ways, but
> it returns inaccurate results.
> 
> Thanks,
> 
> Ben


If memory serves, this is because Gabor used the version of as.Date() from his 
'zoo' package in that post, which does not require an origin to be specified, 
whereas the default as.Date() function in R's base package does:

prevmonday <- function(x) 7 * floor(as.numeric(x-1+4) / 7) + as.Date(1-4)

> prevmonday(Sys.Date())
Error in as.Date.numeric(1 - 4) : 'origin' must be supplied

> require(zoo)
Loading required package: zoo

Attaching package: 'zoo'

The following object(s) are masked from 'package:base':

    as.Date

> prevmonday(Sys.Date())
[1] "2011-08-29"


# Remove 'zoo' to use the base function
detach(package:zoo)

> prevmonday(Sys.Date())
Error in as.Date.numeric(1 - 4) : 'origin' must be supplied


# Fix the function to use base::as.Date()
prevmonday <- function(x) 7 * floor(as.numeric(x-1+4) / 7) + as.Date(1-4, 
origin = "1970-01-01")

> prevmonday(Sys.Date())
[1] "2011-08-29"


See ?as.Date

HTH,

Marc Schwartz

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to