首页 > 解决方案 > 循环多个 which 语句

问题描述

我有一个带有旅行数据的长格式 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 新手,我不知道如何构建这样的循环。所以我希望有人对此有想法。先感谢您!

标签: rloopsconditional-statements

解决方案


推荐阅读