首页 > 解决方案 > 将数据帧的数字列(到达和离开时间之间的差异)转换为分钟

问题描述

亲爱的 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。

非常感谢您的及时帮助。

谢谢!!!

标签: rggplot2tidyverselubridatedata-wrangling

解决方案


转换格式并用于Arrivaltime计算Departuretime分钟差。POSIXctdifftime

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")

推荐阅读