如何计算多次连续发生事件的持续时间?

时间:2017-07-07 06:49:24

标签: r data.table

这是我的数据的子集

i

我想计算同一事件连续发生的持续时间 - 所以,比如我想要事件B的持续时间,输出应该是

int

我尝试过(解决方案)解决方案来自: Using conditional statements with difftime in RCalulcate running difference of time using difftime on one column of timestamps

但我似乎无法得到我想要实现的目标。希望我能得到一些帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以使用@Override public void onMapReady(GoogleMap googleMap) { mGoogleMap = googleMap; new YourAsyncTask(this).execute(); } 。转换' data.frame'到' data.table' (data.table),根据'事件'的游程长度ID创建分组变量。即基于相同的相邻元素(' grp'),转换'时间'到setDT(df1),按' grp'分组,指定' i'使用逻辑条件(POSIXct),找出最后一个和第一个' Time1'的差异。使用Event == "B",然后我们分配'持续时间'这不是每个' grp'到NA。

difftime

数据

library(data.table)
setDT(df1)[, grp := rleid(Event)][, Time1 := as.POSIXct(Time, format = 
       "%H:%M:%S")][Event == "B", 
     Duration := as.numeric(difftime(Time1[.N], Time1[1], unit = "secs")), grp]
df1[df1[, .I[seq_len(.N) != 1], grp]$V1, Duration := NA][, c("Time1", "grp") := NULL][]
#   No Event     Time Duration
#1:  1     A 22:00:00       NA
#2:  2     B 22:00:10       20
#3:  3     B 22:00:20       NA
#4:  4     B 22:00:30       NA
#5:  5     C 22:00:40       NA
#6:  6     B 22:00:10       20
#7:  7     B 22:00:20       NA
#8:  8     B 22:00:30       NA
#9:  9     A 22:00:40       NA