r - 将数据帧的数字列(到达和离开时间之间的差异)转换为分钟
问题描述
亲爱的 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。
非常感谢您的及时帮助。
谢谢!!!
解决方案
转换格式并用于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")
推荐阅读
- python - 在另一个线程上调用的 os._exit() 不会退出程序
- python - 如何有效地总结时间范围内的重叠时间间隔?
- three.js - 无法在 Linux 中使用 three.js 将网格平面添加到 Autodesk 查看器中?
- node.js - 如何在 lambda 函数中使用 nodejs 将 mongodb 输出存储在变量中?
- macos - Prism for Xamarin Forms 是否支持本机 MacOS 应用程序(即 Xamarin.Forms.Mac)?
- c# - DataGrid 中的动态行和列以及从 WPF 控件写入的每个单元格
- ios - ReactNative,应用程序在模拟器上运行,但不在真正的 iPhone 上
- python - 将 Json/Dict 响应保存到数据帧 - 它们在导出时转换为字符串。如何避免这种情况?
- javascript - 尝试将自定义网格添加到离线查看器
- php - 我需要从两个不同的表中检索数据