Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 908
maximusdooku Avatar asked Oct 04 '16 22:10

maximusdooku


1 Answers

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

like image 183
eipi10 Avatar answered Nov 06 '22 14:11

eipi10