Преобразование цифры c столбец (разница между временем прибытия и отбытия) кадра данных в минуты - PullRequest
0 голосов
/ 16 апреля 2020

Уважаемые участники сообщества R, я хотел бы создать новую переменную (время в пути) на основе разницы между временем отправления и прибытия пассажиров (время прибытия - время отправления) от пункта отправления до пункта назначения (24-часовой формат).

Однако проблема заключается в том, что столбец имеет номер c, а значения, превышающие 30 минут, не фиксируются как минуты. Я хочу, чтобы мои ежедневные поездки были в минутах, а не в часах. Ниже приведен формат моего набора данных.

Departuretime  Arrivaltime commutetime 
950            1000        50
1030           1035        5
1750           1800        50
1520           1530        10

Когда я принимаю разницу между временем отправления и прибытия, вещи становятся странными за 30 минут, что, конечно, вы ожидаете. Мой фрейм данных содержит 6 670 записей, и эти столбцы являются единственной проблемой c. Разница между 950 и 1000 должна переводиться в разницу для 9:50 и 10:00, поэтому разница не может быть 50. Как показано во втором последнем ряду, разница между 1750 и 1800 не должна давать 50.

Буду очень признателен за вашу своевременную помощь.

Спасибо !!!

1 Ответ

0 голосов
/ 16 апреля 2020

Преобразуйте Arrivaltime и Departuretime в POSIXct формат и используйте difftime для вычисления разницы в минутах.

df$commutetime <- difftime(
               as.POSIXct(sprintf("%04d", df$Arrivaltime), format = "%H%M"), 
               as.POSIXct(sprintf("%04d", df$Departuretime), format = "%H%M"), 
               units = "mins")

df
#  Departuretime Arrivaltime commutetime
#1           950        1000     10 mins
#2          1030        1035      5 mins
#3          1750        1800     10 mins
#4          1520        1530     10 mins

данные

df <- structure(list(Departuretime = c(950L, 1030L, 1750L, 1520L), 
Arrivaltime = c(1000L, 1035L, 1800L, 1530L)), row.names = c(NA, 
-4L), class = "data.frame")
...