2017-05-03 47 views
2

我有一個數據結構問題。無法如何開始。我不確定我的關鍵詞在標題中是否有意義。R - 根據日期創建具有索引的路徑數據結構,帶有「目的地」成爲「原點」

我試過以下內容: Creating a Origin-Destination Table in R是目前爲止幫助最大的。 - 沒有達到我認爲我需要的索引級別。

Creating origin-destination matrices with R - 簡單的一步起點目的地。

--------------------

我的問題:如何創建一個原產地 - 目的地的數據集,並有「原產地」和「目的地'按日期排序。

這裏是我的數據集:

Student  Classes  time 
John  HomeRoom  8:00 
John  Math   9:00 
John  English  10:00 
John  Physics  11:00 
John  Art   1:00 
John  Lunch   12:00 
Sarah  HomeRoom  8:00 
Sarah  English  9:00 
Sarah  Art   10:00 
Sarah  Physics  12:00 
Sarah  Lunch   11:00 

這就是我想要的我的數據集的樣子:

Student OriginClass time DestinationClass timeDest ClassFlow 
John  HomeRoom 8:00 Math    9:00  1 
John  Math  9:00 English   10:00  2 
John  English  10:00 Physics   11:00  3 
John  Physics  11:00 Lunch    12:00  4 
John  Lunch  12:00 Art    1:00  5 
John  Art   1:00 Home    2:00  6 
Sarah HomeRoom 8:00 English   9:00  1 
Sarah English  9:00 Art    10:00  2 
Sarah Art   10:00 Lunch    11:00  3 
Sarah Lunch  11:00 Physics   12:00  4 
Sarah Physics  12:00 Home    1:00  5 

有兩個技巧:

  1. 纏繞在'目的地'成爲'起源'。
  2. 將最終的「目的地」添加爲家。

我認爲我的下一個步驟如下:基於時間由學生

  • 指數類「ClassIndex」
  • 設置我的「原產地」爲0+ [上一行ClassIndex] 〜不知道該怎麼辦
  • 創建一個循環,MAX(ClassIndex)+ 1 =「家」

背後所有這一切的一點是要比布爾顯示的流程圖。

約翰:首頁房間 - >數學 - >英語 - >物理學 - >午餐 - >藝術 - >首頁

莎拉:首頁房間 - >英語 - >藝術 - >午餐 - >物理學 - >首頁

+0

絕對接近BC'timeDest'工作完美。 'DestinationClass = lead(Classes,default =「Home」'給我一個錯誤,錯誤是'Error:與請求類型不兼容' - 我在想這是因爲'Classes'是一個字符串,你怎麼看?我可以做一個帶有唯一classID的查找表 –

+1

雖然假設你的'Classes'是'character'類,但它對我來說還是很好的。順便說一下,我正在使用'dplyr'的devel版本。 – akrun

+0

'Classes' as a因素 - 效果很好,謝謝@akrun –

回答

1

我們可以使用tidyverse

library(dplyr) 
df1 %>% 
    group_by(Student) %>% 
    mutate(DestinationClass = lead(Classes, default = "Home"), 
      timeDest = lead(time), 
      ClassFlow = row_number()) 
相關問題