使用dplyr查找组内的时间间隔

时间:2018-04-27 15:49:59

标签: r dplyr lubridate

我有以下几点:

v = [0.4 0.2 0.1 0.44 0.25 0.9 0.91]';
data.x = [1 3 2 5 2]';
v(data.x)

ans =

    0.4000
    0.1000
    0.2000
    0.2500
    0.2000

目标是找到每个 start_dttm chan <dttm> <dbl> 1 2018-03-27 23:32:22 5 2 2018-03-27 22:41:24 15 3 2018-03-27 22:41:57 15 4 2018-03-27 22:42:02 15 5 2018-03-27 22:42:48 15 6 2018-03-27 22:42:55 15 7 2018-03-27 22:42:41 15 8 2018-03-27 22:43:04 15 9 2018-03-27 22:43:24 15 10 2018-03-27 22:43:38 15 11 2018-03-27 22:44:16 15 12 2018-03-27 22:44:03 15 内的行之间的时间间隔,即第1行我想获得NA,第2行 - 33秒,第3行 - 5秒等等。我在想使用chan添加额外列,该列将在该组中存储下一个start_dttm值。以类似于mutate的方式。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以按chan分组,然后使用lead计算差异:

df %>% 
    group_by(chan) %>% 
    mutate(time_diff = lead(start_dttm) - start_dttm)

# A tibble: 12 x 3
# Groups:   chan [2]
#   start_dttm          chan  time_diff
#   <dttm>              <chr> <time>   
# 1 2018-03-27 23:32:22 5     NA       
# 2 2018-03-27 22:41:24 15    33       
# 3 2018-03-27 22:41:57 15    5        
# 4 2018-03-27 22:42:02 15    46       
# 5 2018-03-27 22:42:48 15    7        
# 6 2018-03-27 22:42:55 15    -14      
# 7 2018-03-27 22:42:41 15    23       
# 8 2018-03-27 22:43:04 15    20       
# 9 2018-03-27 22:43:24 15    14       
#10 2018-03-27 22:43:38 15    38       
#11 2018-03-27 22:44:16 15    -13      
#12 2018-03-27 22:44:03 15    NA