[问题] 特定条件下的列与列时间运算

楼主: joson4921 (特务)   2016-12-02 10:00:02
- 问题: 当你想要问问题时,请使用这个类别。
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
各位先进大家好,为了方便叙述问题,先节录以下资料方便说明:
Goback NameZh Leave Time UniqueBusID
0 大兴一街 TRUE 2015/1/1 13:10:32 大兴一街->屯区艺文中心162
0 大兴五街 FALSE 2015/1/1 13:10:39 大兴一街->屯区艺文中心162
0 大兴五街  TRUE  2015/1/1 13:10:51 大兴一街->屯区艺文中心162
0 屯区艺文中心 FALSE 2015/1/1 13:11:20 大兴一街->屯区艺文中心162
0 屯区艺文中心 TRUE 2015/1/1 13:12:32 大兴一街->屯区艺文中心162
1 屯区艺文中心 FALSE 2015/1/1 13:36:50 屯区艺文中心->莒光新城163
1 屯区艺文中心 TRUE 2015/1/1 13:36:56 屯区艺文中心->莒光新城163
1 大兴五街 FALSE 2015/1/1 13:37:28 屯区艺文中心->莒光新城163
1 大兴五街 TRUE 2015/1/1 13:37:38 屯区艺文中心->莒光新城163
1 大兴一街 FALSE 2015/1/1 13:37:43 屯区艺文中心->莒光新城163
  当 Leave = TRUE 代表车辆离站
当 Leave = FALSE 代表车辆到站
我想做资料处理问题如下所述:
1、列与列之间的时间运算(同一班车计算站间旅行时间)
前一班车: 大兴一街(TRUE,第1笔) -> 大兴五街(FALSE,第2笔) 00:00:07
大兴一街(TRUE,第1笔) -> 屯区艺文中心(FALSE,第4笔) 00:00:48
  后一班车:屯区艺文中心(TRUE,第7笔) -> 大兴五街(FALSE,第8笔) 00:00:32
       屯区艺文中心(TRUE,第7笔) -> 大兴一街(FALSE,第10笔) 00:00:47
之前曾经来板上问过,知道对UniqueBusID用groupby下去,
就可以把不同班车的资料切分开来处理,以资料为例,前5笔和后5笔分别是不同班车
而我想求的是站间旅行时间,因此必须计算列与列之间的时间差,
但是这边我希望程式可以自动判断
(1) 当上下两列的UniqueBusID一样的时候才计算站间旅行时间
(2) 第5笔资料其实是无用的,因为终点站只需要到达时间(Leave=FALSE)
所以希望程式跳过不执行
(3) 当上下两列的UniqueBusID不同时,则计算时间的基准改为新的资料
以前一班车为例,站间旅行时间计算基准是第1笔资料(Leave = TRUE,车辆离站)
但是第6笔资料开始UniqueBusID改变了(不同车班)
故后一班车的站间旅行时间计算基准改为第7笔资料(Leave = TRUE,车辆离站)
试了好几天试不出来想要的结果,可能是我对R的函数不熟悉的关系
有请板上各位先进指点迷津,非常感谢!!
[程式范例]:
[环境叙述]:
请提供 sessionInfo() 的输出结果,
里面含有所有你使用的作业系统、R 的版本和套件版本资讯,
让版友更容易找出错误
[关键字]:
选择性,也许未来有用
作者: cywhale (cywhale)   2016-12-02 11:27:00
时间差19秒和2分钟应该是第3 和5 对第1笔的时间差吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com