Пара шагов. Во-первых, некоторые примеры данных:
dat <- read.csv(header = FALSE, stringsAsFactors = FALSE, text="
1/1/19 5:20
1/1/19 5:30
1/1/19 5:38
1/1/19 5:52
1/1/19 6:00
1/1/19 6:00
1/1/19 6:00
1/1/19 6:15")
dat
# V1
# 1 1/1/19 5:20
# 2 1/1/19 5:30
# 3 1/1/19 5:38
# 4 1/1/19 5:52
# 5 1/1/19 6:00
# 6 1/1/19 6:00
# 7 1/1/19 6:00
# 8 1/1/19 6:15
Во-вторых, преобразуйте его в «правильный» POSIXt
(отметка времени) объект:
dat$V1 <- as.POSIXct(dat$V1, format = "%m/%d/%y %H:%M", tz = "UTC")
dat
# V1
# 1 2019-01-01 05:20:00
# 2 2019-01-01 05:30:00
# 3 2019-01-01 05:38:00
# 4 2019-01-01 05:52:00
# 5 2019-01-01 06:00:00
# 6 2019-01-01 06:00:00
# 7 2019-01-01 06:00:00
# 8 2019-01-01 06:15:00
Затем найдите различия. Обратите внимание, что разность может возвращать единицы, отличные от секунд, поэтому защитное программирование может заставить , что:
d <- dat$V1 - dat$V1[1]
d
# Time differences in secs
# [1] 0 600 1080 1920 2400 2400 2400 3300
units(d) <- "hours"
d
# Time differences in hours
# [1] 0.0000000 0.1666667 0.3000000 0.5333333 0.6666667 0.6666667 0.6666667
# [8] 0.9166667
или по предложению @ akrun, однократный вызовиз
difftime(dat$V1, dat$V1[1], units="hours")
# Time differences in hours
# [1] 0.0000000 0.1666667 0.3000000 0.5333333 0.6666667 0.6666667 0.6666667
# [8] 0.9166667