I have a script in which I subset my data according to some set time periods and wanted to subset all the records that had occurred in the last month.
However if I t
The calculation of months is indeed perfomed by base R but not the way your think. Months is used to get the month of a date object.
#Example
today <- Sys.Date()
months(today)
[1] "March"
To add or substract months, you should use %m+%
from lubridate
:
today <- Sys.Date()
today %m+% months(-1)
[1] "2017-02-28"
One month ago is non-defined in this context. February 29th only exists in leap years.
See the lubridate documentation:
Note: Arithmetic with periods can results in undefined behavior when non-existent dates are involved (such as February 29th in non-leap years). Please see Period-class for more details and %m+% and add_with_rollback for alternative operations.
The lubridate
package can handle what you are doing, but you need to perform the operaton using %m+%
.