【发布时间】:2020-12-09 16:05:47
【问题描述】:
我有两列 1) Start.Time 2) End.Time .
两列中的数据都是 chr 格式和“00:00:00”。
如何获得具有持续时间的列? (End.Time. - Start.Time)
感谢您的帮助。
【问题讨论】:
-
将它们转换为像
POSIXct这样的日期时间类,然后减法就可以了。见a couple options here。
我有两列 1) Start.Time 2) End.Time .
两列中的数据都是 chr 格式和“00:00:00”。
如何获得具有持续时间的列? (End.Time. - Start.Time)
感谢您的帮助。
【问题讨论】:
POSIXct 这样的日期时间类,然后减法就可以了。见a couple options here。
我们也可以用data.table 转换成ITime 并得到区别
library(data.table)
setDT(df)[, duration := as.ITime(t1) - as.ITime(t2)]
-输出
df
# t1 t2 duration
#1: 12:24:13 10:46:34 01:37:39
#2: 10:04:39 09:43:23 00:21:16
df <- data.frame(t1 = c("12:24:13", "10:04:39"), t2 = c("10:46:34", "09:43:23"))
【讨论】:
你可以试试chron包
transform(
df,
duration = chron(times = t1) - chron(times = t2)
)
这样
t1 t2 duration
1 12:24:13 10:46:34 01:37:39
2 10:04:39 09:43:23 00:21:16
数据
df <- data.frame(t1 = c("12:24:13", "10:04:39"), t2 = c("10:46:34", "09:43:23"))
【讨论】:
你可以试试:
t1 <- c('12:24:13','10:04:39')
t2 <- c('10:46:34','09:43:23')
unclass(as.POSIXct(t1,format="%H:%M:%S")) - unclass(as.POSIXct(t2,format="%H:%M:%S"))
[1] 5859 1276
attr(,"tzone")
POSIXct 是自纪元以来的秒数,即 1970-01-01。在上面的例子中,输出是以秒为单位的时间差。
【讨论】: