【问题标题】:Finding time intervals within group using dplyr使用 dplyr 查找组内的时间间隔
【发布时间】:2018-10-08 12:21:33
【问题描述】:

我有以下小标题:

   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

目标是在每个chan 中找到行之间的时间间隔,即对于第 1 行,我想获得 NA,对于第 2 行 - 33 秒,对于第 3 行 - 5 秒等。我正在考虑添加使用mutate 的额外列将存储该组中的下一个 start_dttm 值。以类似于dplyr::first(start_dttm) 的方式。有什么建议吗?

【问题讨论】:

    标签: r dplyr lubridate


    【解决方案1】:

    您可以通过chan group_by,然后使用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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      相关资源
      最近更新 更多