在 R 中找到时间之间的差异
Find difference between times in R
帮我找出 times.For 之间的区别,例如:这些是日期和时间
2015-11-24 16:49:14
2014-12-02 16:52:43
需要 HH:MM:SS
格式的结果,使用 r.
由于您只需要时间之间的差异,忽略日期,您可以先使用 strptime
提取时间
x <- strptime(substr(a, 12, 19), format="%H:%M:%S")
y <- strptime(substr(b, 12, 19), format="%H:%M:%S")
然后使用lubridate
包的seconds_to_period
函数你可以得到时间差然后使用sprintf
格式化输出
library(lubridate)
temp <- seconds_to_period(as.numeric(difftime(y, x, units = "secs")))
sprintf('%02d:%02d:%02d', hour(temp), minute(temp), second(temp))
# [1] "00:03:29"
数据
a <- as.POSIXct("2015-11-24 16:49:14")
b <- as.POSIXct("2014-12-02 16:52:43")
用下面的代码来获得差异
library(lubridate)
interval(ymd_hms("2015-11-2416:17:38"),ymd_hms("2015-11-24 14:19:44"))
span<-interval(as.POSIXct("2015-11-24 16:17:38"),
as.POSIXct("2015-11-24 14:19:44"))
as.period(span)
答案格式
> -1H -57M -54S
同时显示年月日的差异
帮我找出 times.For 之间的区别,例如:这些是日期和时间
2015-11-24 16:49:14
2014-12-02 16:52:43
需要 HH:MM:SS
格式的结果,使用 r.
由于您只需要时间之间的差异,忽略日期,您可以先使用 strptime
x <- strptime(substr(a, 12, 19), format="%H:%M:%S")
y <- strptime(substr(b, 12, 19), format="%H:%M:%S")
然后使用lubridate
包的seconds_to_period
函数你可以得到时间差然后使用sprintf
library(lubridate)
temp <- seconds_to_period(as.numeric(difftime(y, x, units = "secs")))
sprintf('%02d:%02d:%02d', hour(temp), minute(temp), second(temp))
# [1] "00:03:29"
数据
a <- as.POSIXct("2015-11-24 16:49:14")
b <- as.POSIXct("2014-12-02 16:52:43")
用下面的代码来获得差异
library(lubridate)
interval(ymd_hms("2015-11-2416:17:38"),ymd_hms("2015-11-24 14:19:44"))
span<-interval(as.POSIXct("2015-11-24 16:17:38"),
as.POSIXct("2015-11-24 14:19:44"))
as.period(span)
答案格式
> -1H -57M -54S
同时显示年月日的差异