【问题标题】:Group by Status and find difference of datetime being on this status按状态分组并查找处于此状态的日期时间的差异
【发布时间】:2021-06-07 11:24:58
【问题描述】:
 x                     Status   
14/09/2017 15:30:31     A           
14/09/2017 15:30:34     A           
14/09/2017 16:40:25     B           
14/09/2017 17:00:25     B           
15/09/2017 09:00:20     A            
15/09/2017 10:00:20     A

我想要的是按状态对其进行分组,并找到每个组的日期时间之间的差异以及时间的累积。 所需的输出将是

 x                     Status   diff.time
14/09/2017 15:30:31     A           
14/09/2017 15:30:34     A           3 mins
14/09/2017 16:40:25     B           
14/09/2017 17:00:25     B           20 mins
15/09/2017 09:00:20     A            
15/09/2017 10:00:20     A           60 mins

【问题讨论】:

    标签: r rscript


    【解决方案1】:
    library( data.table )
    
    #sample data
    DT <- fread("x                     Status   
    14/09/2017T15:30:31     A           
    14/09/2017T15:30:34     A           
    14/09/2017T16:40:25     B           
    14/09/2017T17:00:25     B           
    15/09/2017T09:00:20     A            
    15/09/2017T10:00:20     A")
    
    DT[, x := as.POSIXct( x, format = "%d/%m/%YT%H:%M:%S" )]
    
    #code
    DT[, diff.time := max(x) - min(x),  by = .(rleid(Status)) ][]
    
    
    # x                      Status      test
    # 1: 2017-09-14 15:30:31      A    3 secs
    # 2: 2017-09-14 15:30:34      A    3 secs
    # 3: 2017-09-14 16:40:25      B 1200 secs
    # 4: 2017-09-14 17:00:25      B 1200 secs
    # 5: 2017-09-15 09:00:20      A 3600 secs
    # 6: 2017-09-15 10:00:20      A 3600 secs
       
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多