Расчет разницы во времени с учетом полуночи с использованием r - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над проблемой, где мне нужно рассчитать разницу во времени в минутах.У меня есть значения времени в формате hh:mm:ss в столбце (более 28 000 значений).

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

tdiff <- dt[dt, Time_Diff := c(abs(diff(as.numeric(Time))),0.30), Student_ID]

, где dt --> - упорядоченная таблица данных и 0.30 --> 30 минут, назначенных последнему занятию студента в курсе.

Это работает, но не учитываетполночь

Спасибо @niko за помощь, и эта проблема решена, однако «30 минут», которые должны быть выделены для последнего занятия каждого студента, все еще не сделано.Любая помощь в этом направлении будет принята с благодарностью.Спасибо.

Ожидаемый результат описан ниже

S_Id    Date            Time           Time_Diff      Time_Diff(minutes)
A       10/08/2018      23:49:00       00:01:00       1 minutes 
A       10/08/2018      23:50:00       00:09:00       9
A       10/08/2018      23:59:00       00:02:00       2
A       10/09/2018      00:01:00       00:09:00       9
A       10/09/2018      00:10:00       08:02:00       482
A       10/09/2018      08:12:00       04:08:00       248
A       10/09/2018      12:20:00       10:01:00       601
A       10/09/2018      22:21:00       01:35:00       95
A       10/09/2018      23:56:00       00:09:00       9
A       10/10/2018      00:05:00       00:05:00       5
A       10/10/2018      00:10:00       00:02:00       2
A       10/10/2018      00:12:00       00:30:00       30
B       10/08/2018      23:49:00       00:01:00       1
B       10/08/2018      23:50:00       00:09:00       9
B       10/08/2018      23:59:00       00:02:00       2
B       10/09/2018      00:01:00       00:09:00       9
B       10/09/2018      00:10:00       08:02:00       482
B       10/09/2018      08:12:00       04:08:00       248
B       10/09/2018      12:20:00       10:01:00       601
B       10/09/2018      22:21:00       01:35:00       95
B       10/09/2018      23:56:00       00:09:00       9
B       10/10/2018      00:05:00       00:05:00       5
B       10/10/2018      00:10:00       00:02:00       2
B       10/10/2018      00:12:00       00:30:00       30
C       10/08/2018      23:49:00       00:01:00       1
C       10/08/2018      23:50:00       00:09:00       9
C       10/08/2018      23:59:00       00:02:00       2
C       10/09/2018      00:01:00       00:09:00       9
C       10/09/2018      00:10:00       08:02:00       482
C       10/09/2018      08:12:00       04:08:00       248
C       10/09/2018      12:20:00       10:01:00       601
C       10/09/2018      22:21:00       01:35:00       95
C       10/09/2018      23:56:00       00:09:00       9
C       10/10/2018      00:05:00       00:05:00       5
C       10/10/2018      00:10:00       00:02:00       2
C       10/10/2018      00:12:00       00:30:00       30

1 Ответ

0 голосов
/ 22 мая 2019

Попробуйте преобразовать date и time в POSIXct

# dt is your data frame
diff(as.POSIXct(paste(dt$Date, dt$Time), format='%m/%d/%Y %H:%M:%S')) # or '%d/%m/%Y %H:%M:%S'

Это должно сработать.

Данные

dt <- structure(list(Date = c("10/08/2018", "10/08/2018", "10/08/2018", "10/09/2018", "10/09/2018", 
                              "10/09/2018", "10/09/2018", "10/09/2018", "10/09/2018", "10/10/2018", 
                              "10/10/2018", "10/10/2018"), 
                 Time = c("23:49:00", "23:50:00", "23:59:00", "00:01:00", "00:10:00", "08:12:00", 
                          "12:20:00", "22:21:00", "23:56:00", "00:05:00", "00:10:00", "00:12:00")), 
            class = "data.frame", row.names = c(NA, -12L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...