Search code examples
rtimestampsequencexts

How to convert xts timeseries to hourly difference from 00:00:00


I have an xts timeseries as

Timestamp           - X
30-07-2019 23:00:00 - 110
31-07-2019 00:00:00 - 120 
31-07-2019 01:00:00 - 105
31-07-2019 02:00:00 - 110 
31-07-2019 03:00:00 - 100 
31-07-2019 04:00:00 - 105 
31-07-2019 05:00:00 - 115 
31-07-2019 06:00:00 - 125

Now i want the timestamp to be the hours to be the hour of the day, for example

Timestamp - X
-1        - 110
0         - 120 
1         - 105
2         - 110 
3         - 100 
4         - 105 
5         - 115 
6         - 125

And still keep it as an xts series, in order to use it with dygraph in a shiny application


Solution

  • Another option is to use lubridate approach:

    library(lubridate)
    hours_from_midnight <- hour(dmy_hms(df$Timestamp))
    # boolean vector indicating if the time mome
    after_midday <- pm(dmy_hms(df$Timestamp))
    # coercion boolean to numerical is used
    df$hour <- hours_from_midnight - 24 * after_midday