将数据框的数字列(到达和离开时间之间的差异)转换为分钟

Converting numeric column (Difference between arrival and departure time ) of dataframe to minutes

尊敬的 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.

非常感谢您的及时帮助。

谢谢!!!

ArrivaltimeDeparturetime转换为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")