【发布时间】:2020-10-18 09:07:14
【问题描述】:
我目前正面临着纽约市一名司机的出租车行程数据集。我得到了司机 ID 以及每次旅行的接送日期和时间以及下车日期和时间。现在我想计算上一次行程的下车时间和新行程的接送时间之间的等待时间。因此,我必须计算两列之间的时间差,其中包含一个 Lag(因为下车时间是指最后一次旅行和下一次旅行的接送时间(下一列)),按驾驶员 ID 分组(以确保我没有计算时间差在两个不同司机的行程之间)。
可能的数据集如下所示:
hack_license = c("303F79923DA5DA7A10DF15E2D91CDCF7","697ABFCDF7E7C77A01183C857132F2A4","697ABFCDF7E7C77A01183C857132F2A4","697ABFCDF7E7C77A01183C857132F2A4","ABE23CA71E2DE84972281BA1C70B6EBB","ABE23CA71E2DE84972281BA1C70B6EBB","BA83D7C383EAA4F9D78A1A8B83CB3E92","BA83D7C383EAA4F9D78A1A8B83CB3E92","D476A1872F1F6594BD638C274483ED06","D476A1872F1F6594BD638C274483ED06")
pickup_datetime = c("2013-12-31 23:01:07","2013-12-31 23:04:00","2013-12-31 23:31:00","2013-12-31 23:40:00","2013-12-31 23:16:39","2013-12-31 23:24:05","2013-12-31 23:09:10","2013-12-31 23:26:26","2013-12-31 23:13:00","2013-12-31 23:22:00")
dropoff_datetime = c("2013-12-31 23:20:33","2013-12-31 23:28:00","2013-12-31 23:33:00","2013-12-31 23:48:00","2013-12-31 23:22:29","2013-12-31 23:28:37","23:21:24","2013-12-31 23:36:54","2013-12-31 23:20:00","2013-12-31 23:27:00")
data <- data.frame(hack_license,pickup_datetime,dropoff_datetime)
我尝试像这样使用 dplyr 和 lubridate,但它不起作用。
data %>%
group_by(data$hack_license) %>%
group_by(hack_license) %>%
mutate(waiting_time_in_secs = difftime(pickup_datetime,
lag(dropoff_datetime), units = 'secs'))
也许你们中的一些人可以在这里帮助我。会很棒!
【问题讨论】:
-
在使用
%>%时不要通过$使用列名 -
是的,我已经试过不用$了。无论哪种方式:
mutate_all()忽略了以下分组变量:列hack_license
标签: r dplyr lubridate difftime