В приведенной ниже таблице данных указаны временные метки, связанные с регистрацией и разрешением инцидента. Вектор ResolutionDiff
содержит разницу в минутах FROMTHE Решенный и Записан векторов, как рассчитывается следующим утверждением:За исключением выходных или нерабочих часов с difftime в R
dataset$ResolutionDiff <- difftime(dataset$Resolved, dataset$Logged)
| Reportnumber | Priority | Logged | Resolved | ResolutionDiff | netdifftime |
|--------------|----------|-----------------|-----------------|--------------------|-------------|
| 1 | High | 22/1/2016 17:52 | 25/1/2016 13:35 | 406288333333333,00 | |
| 2 | Medium | 18/1/2016 13:09 | 22/1/2016 12:55 | 5745.7 | |
| 3 | Medium | 15/1/2016 10:47 | 18/1/2016 13:06 | 445876666666667,00 | |
| 4 | Medium | 15/1/2016 10:32 | 18/1/2016 13:04 | 447173333333333,00 | |
| 5 | High | 14/1/2016 14:13 | 14/1/2016 15:33 | 792333333333333,00 | |
Я пытаюсь вычислить вектор netdifftime
условно вычитанием нерабочим часы из ResolutionDiff, например как выходные, когда dataset$Priority !=High
. Например, для строки 1 ожидаемый выход в netdifftime будет равен 4062,883 - (48 * 60) = 1183.
Есть ли способ выполнить такую задачу в R? Я копался в таких библиотеках, как lubridate, и подозревал, что возможным решением было бы создать временную переменную с интервалами в выходные дни, которые затем можно было бы проверить на соответствующий интервал для набора данных $ Resolved, dataat $ Записан, но не смог получить что-то Работа.
Да, это возможно. Вам просто нужно тщательно определить свои правила. ... Кроме того, FYI- 'dput' ваши данные примера vs (или в дополнение к) вставляют его. –
Подход, который может быть неэффективным с точки зрения памяти, выглядит как 'dataset $ ResolutionDiff - mapply (function (d1, d2) sum (as.POSIXlt (seq (d1, d2," day ")) $ wday% in% c (0L , 6L)) * (24 * 60), набор данных $ Записан, набор данных $ Решено) '. Это может помочь опубликовать более полный пример. –
На самом деле это будет немного сложнее, так как чистая разница также должна учитывать, был ли инцидент зарегистрирован во время или вне рабочего времени, аналогично функции NETWORKDAYS от excel. В настоящее время я работаю над подходом, поэтому я также обновляю исходный вопрос. – orestisf