[問題] 特定條件下的列與列時間運算

作者: 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