[R] A Date related problem

Marc Schwartz marc_schwartz at me.com
Tue Dec 15 21:19:06 CET 2009


On Dec 15, 2009, at 1:39 PM, Megh wrote:

>
> Dear all,
>
> Please consider following date "as.Date("2009-02-01")". If I  
> subtract "1"
> then it will give last day, similarly if I subtract "2" it will give  
> 2nd
> last day. But what about if I want to get "last month", "2md last  
> month"
> i.e. "2009-01-01" or "2008-12-01" etc or even year?
>
> Is there any automated way (like day-case, as explained) for doing  
> that?
>
> Your help will be highly appreciated.


See ?seq.date

You can use a negative value for the 'by' argument along with the  
desired unit of time. Then define how many values in the sequence you  
want. We'll also remove the first value, which is the starting point.

# The prior 2 months

 > seq(as.Date("2009-02-01"), by = "-1 month", length = 3)[-1]
[1] "2009-01-01" "2008-12-01"


# Prior two years

 > seq(as.Date("2009-02-01"), by = "-1 year", length = 3)[-1]
[1] "2008-02-01" "2007-02-01"


HTH,

Marc Schwartz




More information about the R-help mailing list