2017-01-25 84 views
1

下面是一些示例數據:計數事件的數量目前流逝當一個新的事件發生(RevoScaleR/mrsdeploy)

Begin = c("10-10-2010 12:15:35", "10-10-2010 12:20:52", "10-10-2010 12:23:45", "10-10-2010 12:25:01", "10-10-2010 12:30:29") 

End = c("10-10-2010 12:24:23", "10-10-2010 12:23:30", "10-10-2010 12:45:15", "10-10-2010 12:32:11", "10-10-2010 12:45:05") 

df = data.frame(Begin, End) 

我要算那些當前未完成事件的數量,當一個新的事件開始並將其記錄在一個新列中。所以對於這個特定的例子,最終結果是所需的將是一個列值爲:0,1,1,1,2,0

我有一個關於如何使用data.table做到這一點的解決方案,它工作正常。我希望能夠找到一個適用於RevoScaleR/mrsdeploy包的解決方案,這樣做的程序可以利用並行計算/數據分塊。

這裏是在data.table工程解決方案:

library(lubridate) 
library(data.table) 
df <- as.data.frame(lapply(df, dmy_hms)) 
dt <- as.data.table(df) 
setkey(dt,Begin,End)[,id:=.I] 
merge(dt, foverlaps(dt,dt)[id>i.id,.N,by="Begin,End"], all.x=T)[,id:=NULL][is.na(N),N:=0][] 

同樣,我在尋找一個可以遠程對SQLSERVER2016與中提到的包執行。

+0

我正在計算另一個開始時尚未結束的事件數量。這是斷電數據,所以這就是說'當這次停電開始時,已經有x次停電尚未修復'。 – TravisLong

回答

0

過程以升序開始和結束,並保持你已經看到多少開始和結束的計數。如果你沒有重複/僞造的結束事件,這將工作得很好。

+0

對不起,但我不太清楚你的意思。 – TravisLong

0

這似乎用一個簡單的sapply

sapply(df$Begin, function(x) sum((x < df$End) & (x > df$Begin))) 

做並行它只是用rxExecmclapplyparLapplyforeach

相關問題