I have large number of dates in this format:
dt = as.POSIXct("2004-04-02 12:45:00 UTC")
And I have to add/subtract numbers that may not always be whole numbers.I am using lubridate library.
Example:
dt - days(2)
[1] "2004-03-31 12:45:00 UTC"
But,
dt - days(1.5)
Error in validObject(.Object) :
invalid class “Period” object: periods must have integer values
Is there an alternative for this operation?
The error is occurring with days(1.5)
, which doesn't allow fractional periods. You could do:
dt - days(1) - hours(12)
or
dt - 1.5*24*3600
or there's probably a base date function that guys like @DirkEddelbuettel know about that would work also. Ah, it's difftime
(I don't work with dates enough to remember these things off the top of my head).
dt - as.difftime(1.5, units="days")
And, as pointed out by @maximusdooku:
dt - ddays(1.5)
(Based on the code, it looks like ddays
just returns the number of seconds in the requested time period, plus some class information.)
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