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