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

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

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

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

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

Спасибо!!!

0
Xaviermoros 16 Апр 2020 в 10:51

1 ответ

Лучший ответ

Преобразуйте 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")
0
Ronak Shah 16 Апр 2020 в 07:55