R Find time difference in seconds for YYYY-MM-DD HH:MM:SS.MMM format

前端 未结 2 1741
南方客
南方客 2021-02-07 10:08

I\'m trying to subtract 2 character vectors containing date time information in the following format:

> dput(train2)

structure(list(time2 = c(\"2011-09-01 23         


        
2条回答
  •  长情又很酷
    2021-02-07 10:43

    Easy peasy:

    R> now <- Sys.time()
    R> then <- Sys.time()
    R> then - now
    Time difference of 5.357 secs
    R> class(then - now)
    [1] "difftime"
    R> as.numeric(then - now)
    [1] 5.357
    R> 
    

    And for your data:

    R> df
                        time2                   time3
    1 2011-09-01 23:44:52.533 2011-09-01 23:43:59.752
    2  2011-09-05 12:25:37.42 2011-09-05 12:25:01.187
    3  2011-08-24 12:56:58.91 2011-08-24 12:55:13.012
    4 2011-10-25 07:18:14.722 2011-10-25 07:16:51.759
    5 2011-10-25 07:19:51.697 2011-10-25 07:16:51.759
    R> df$time2 <- strptime(df$time2, "%Y-%m-%d %H:%M:%OS")
    R> df$time3 <- strptime(df$time3, "%Y-%m-%d %H:%M:%OS")
    R> df
                        time2                   time3
    1 2011-09-01 23:44:52.533 2011-09-01 23:43:59.752
    2 2011-09-05 12:25:37.420 2011-09-05 12:25:01.187
    3 2011-08-24 12:56:58.910 2011-08-24 12:55:13.012
    4 2011-10-25 07:18:14.722 2011-10-25 07:16:51.759
    5 2011-10-25 07:19:51.697 2011-10-25 07:16:51.759
    R> df$time2 - df$time3
    Time differences in secs
    [1]  52.781  36.233 105.898  82.963 179.938
    attr(,"tzone")
    [1] ""
    R> 
    

    and added back as a numeric to the data frame:

    R> df$dt <- as.numeric(df$time2 - df$time3)
    R> df
                        time2                   time3      dt
    1 2011-09-01 23:44:52.533 2011-09-01 23:43:59.752  52.781
    2 2011-09-05 12:25:37.420 2011-09-05 12:25:01.187  36.233
    3 2011-08-24 12:56:58.910 2011-08-24 12:55:13.012 105.898
    4 2011-10-25 07:18:14.722 2011-10-25 07:16:51.759  82.963
    5 2011-10-25 07:19:51.697 2011-10-25 07:16:51.759 179.938
    R> 
    

提交回复
热议问题