2016-01-26 2 views
0

В приведенной ниже таблице данных указаны временные метки, связанные с регистрацией и разрешением инцидента. Вектор 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 $ Записан, но не смог получить что-то Работа.

+0

Да, это возможно. Вам просто нужно тщательно определить свои правила. ... Кроме того, FYI- 'dput' ваши данные примера vs (или в дополнение к) вставляют его. –

+0

Подход, который может быть неэффективным с точки зрения памяти, выглядит как 'dataset $ ResolutionDiff - mapply (function (d1, d2) sum (as.POSIXlt (seq (d1, d2," day ")) $ wday% in% c (0L , 6L)) * (24 * 60), набор данных $ Записан, набор данных $ Решено) '. Это может помочь опубликовать более полный пример. –

+0

На самом деле это будет немного сложнее, так как чистая разница также должна учитывать, был ли инцидент зарегистрирован во время или вне рабочего времени, аналогично функции NETWORKDAYS от excel. В настоящее время я работаю над подходом, поэтому я также обновляю исходный вопрос. – orestisf

ответ

Смежные вопросы