如何减去两个时间变量之间的时间?

时间:2019-11-26 23:24:00

标签: r

我有两列,分别由字符值组成,例如“ 22:49”和“ 00:18”。它们代表小时和分钟时间值。如何获得这两列之间的区别?我希望我的结果是两个值之间的分钟数。

2 个答案:

答案 0 :(得分:1)

如果您的数据在一栏中,则

dat <- data.frame(x = c("22:49", "00:18"), stringsAsFactors = FALSE)
dat$x <- as.POSIXct(sprintf("2000-01-01 %s:00", dat$x))
diffs <- diff(dat$x)
units(diffs) <- "mins"
diffs <- as.numeric(diffs) %% 1440
diffs
# [1] 89

有了n行数据,这将为您带来n-1的差异……因此,此时您可能想要c(0, diffs)


如果您的数据位于两个不同的列中:

dat <- data.frame(x1 = "22:49", x2 = "00:18", stringsAsFactors = FALSE)

as.numeric(do.call(difftime, c(unname(
  lapply(dat[,c("x2", "x1")],
         function(d) as.POSIXct(sprintf("2000-01-01 %s:00", d)))), units = "mins"))) %% 1440
# [1] 89

在此示例中,注意顺序x2然后x1

答案 1 :(得分:0)