maximusdooku
maximusdooku

Reputation: 5542

How can I add fractional times in R?

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?

Upvotes: 6

Views: 1050

Answers (1)

eipi10
eipi10

Reputation: 93881

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.)

Upvotes: 9

Related Questions