2016-02-15 40 views
-1

更新:這似乎在SQL論壇中有很好的描述 - 如何說明時間範圍之間的差距(其中許多重疊)。可能不得不轉向SQL來快速解決這個問題,但我很驚訝它不能在「R」中完成。看起來間隔使用的對象幾乎全部都是這樣,但在慢循環之外,似乎很難應用於向量範圍的分析。請不要讓我知道如果您有任何意見,但這裏的問題的說明及其在SQL解決方案:在R中量化記錄的非活動 - 重疊記錄事件

https://www.simple-talk.com/sql/t-sql-programming/calculating-gaps-between-overlapping-time-intervals-in-sql/

....我希望做的就是拿出一個名單來自日誌的非活動時間,然後對其進行篩選以顯示最少的非活動時間。

1/17/2012 0:15 1/17/2012 0:31 
1/20/2012 0:21 1/20/2012 0:22 
1/15/2013 1:08 1/15/2013 1:10 
1/15/2013 1:08 1/15/2013 1:10 
1/15/2013 7:39 1/15/2013 7:41 
1/15/2013 7:39 1/15/2013 7:41 
1/16/2013 1:11 1/16/2013 1:15 
1/16/2013 1:11 1/16/2013 1:15 

我剛剛將結束時間滯後到開始行並計算差異,但後來發現存在重疊的活動。我也嘗試過「價格是正確的」類型匹配以獲得最接近的結束時間......除了當然,如果事情正在同時進行,這並不能保證尚未完成的同時任務中沒有任何活動。

我目前有日期時間和日期時間的列。我希望有一個更好的主意,比採取數以百萬計的條目,並使用seq.POSIXt寫每個具有活動的單個分鐘?但即使這似乎不太可行。但似乎會有一些簡單的方法來確定最小尺寸的時間差距,無論是5分鐘還是30分鐘。任何建議?

+1

我不明白什麼是問題(和預期的輸出)。你能改說嗎? –

+0

Kenney,是的 - 但不幸的是我不知道如何在R中做到這一點。也許它需要一個循環...? – lorange

+0

docendo,我想要做的是提出一種方法來識別和量化用戶活動日誌中表示的非活動(最小長度)。 – lorange

回答

0

假設1/17/2012 00:15是在數據集中的第一個值,我將你的數據轉換成兩列,每列將包含的分鐘數,因爲這個時間戳

ie using the first 3 rows of your data as an example 
    _______|_______ 
    0  | 16 
    4323 | 4324 
    528882 | 528884 
    ... | ... 

減去每個這兩列其他人會告訴你活動發生的分鐘,然後你可以簡單地反過來,你會得到你的非活動。

+0

因爲他們重疊,它不起作用,據我所知。我正在考慮在幾年內每分鐘做一次測試,並針對多個重疊的時間間隔進行測試...... – lorange

+0

沒有某種查看代碼的方式,它會變得有點難以幫助對不起 – aeongrail

+0

我不太好 - 我真的很好感謝幫助。這是我原來的解決方案之前,我發現有重疊的數據點 - 所以我絕對認爲這是一個很好的! – lorange