имея дело со временем в разнице г между двумя - PullRequest
1 голос
/ 06 ноября 2019

У меня есть два столбца

starttime                      endtime
2019-11-05 18:02:04            2019-11-05 00:02:04
2019-08-02 20:18:00            2019-0802  01:10:00
2019-12-07 17:28:00            2019-12-07 18:00:00

Я пытаюсь найти разницу во времени между временем начала и окончания

mutate(col = difftime(endtime,starttime,units = "hours")

, но я получаю отрицательные часычто не имеет смысла, и мне нужно, чтобы это было конечное время - звездное время, потому что это могло бы испортить вещи для имеющегося у меня информационного кадра. Я считаю, что 0,533 правильно, я получил Col -18 -19 0,533

1 Ответ

2 голосов
/ 06 ноября 2019

Мы можем увеличить endtime на 1 день, если startttime > endtime, а затем использовать difftime

library(dplyr)

df %>%
  mutate(endtime = if_else(starttime > endtime, endtime + 86400, endtime), 
         col = difftime(endtime,starttime,units = "hours"))

#            starttime             endtime             col
#1 2019-11-05 18:02:04 2019-11-06 00:02:04 6.0000000 hours
#2 2019-08-02 20:18:00 2019-08-03 01:10:00 4.8666667 hours
#3 2019-12-07 17:28:00 2019-12-07 18:00:00 0.5333333 hours

data

df <- structure(list(starttime = structure(c(1572976924, 1564777080, 
1575739680), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
endtime = structure(c(1572912124, 1564708200, 1575741600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC")), row.names = c(NA, -3L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...