我有一个带旅行数据的长格式df。 df如下所示:
id from to traveltime Key departuretime arrivaltime (next stop)
1 2 3 00:01:00 301 08:15:00 08:16:00
1 2 3 00:01:00 301 08:30:00 08:31:00
1 2 3 00:01:00 301 08:45:00 08:46:00
2 3 4 00:02:00 301
2 3 4 00:02:00 301
2 3 4 00:02:00 301
1 5 6 00:01:00 302 09:00:00 09:01:00
1 6 7 00:01:00 302 09:01:00 09:02:00
2 7 8 00:01:00 302
现在我要填充空白单元格。出发时间始终是到达时间与前一站的行驶时间之和。所以预期的输出是:
id from to traveltime Key departuretime arrivaltime (next stop)
1 2 3 00:01:00 301 08:15:00 08:16:00
1 2 3 00:01:00 301 08:30:00 08:31:00
1 2 3 00:01:00 301 08:45:00 08:46:00
2 3 4 00:02:00 301 08:16:00 08:18:00
2 3 4 00:02:00 301 08:31:00 08:33:00
2 3 4 00:02:00 301 08:33:00 08:35:00
1 5 6 00:01:00 302 09:00:00 09:01:00
1 6 7 00:01:00 302 09:01:00 09:02:00
2 7 8 00:01:00 302 09:02:00 09:03:00
我写了一些可以正常工作的代码。但是我必须针对我df中的每个边缘修改代码。
data$arrivaltime <- data$departuretime + data$traveltime
data$departuretime[which(data$id =="2" & data$Key =="301")]<-data$arrivaltime[which(data$id == "1" & data$Key =="301")]
这可以工作,但很费时间。原因我需要针对每个边缘调整此代码。
我现在想做的是使我的代码自动化。这样我就不必手动更改id
和key
参数。
我猜想我需要将Keys
和ids
存储在一个列表中,然后构建一个遍历df
的循环。
我是R语言的新手,我不知道如何建立这样的循环。因此,我希望有人对此有所了解。预先谢谢你!