【问题标题】:Add a column of time difference for each group为每组添加一列时差
【发布时间】:2017-07-11 13:55:45
【问题描述】:

我有一个数据框。

DeviceID       AreaID       Time
325            10152        04:40:36
325            10221        04:45:36
325            10152        12:45:12
525            10152        09:58:32
525            10221        10:03:39
...................................

我想根据以下条件添加一列时差: 如果 AreaID 10152 和 10221 的时间在 1 小时内,我需要每个 DeviceID 的时差。否则它将是 NA。

结果应该是这样的:

DeviceID       AreaID       Time            TimeDifference
325            10152        04:40:36        00:05:00
525            10152        09:58:32        00:05:07
................................

【问题讨论】:

    标签: r datetime


    【解决方案1】:

    这个怎么样:

    # Load data sample
    dat = read.table(text="DeviceID       AreaID       Time
    325            10152        04:40:36
                     325            10221        04:45:36
                     325            10152        12:45:12
                     525            10152        09:58:32
                     525            10221        10:03:39", header=TRUE, stringsAsFactors=FALSE)
    
    library(hms)
    library(tidyverse)
    
    dat$Time = as.hms(dat$Time)
    
    dat %>% 
      group_by(DeviceID) %>% 
      mutate(TimeDifference = as.hms(lead(Time) - Time)) %>% 
      filter(TimeDifference <= 60*60)
    
      DeviceID AreaID     Time TimeDifference
         <int>  <int>   <time>         <time>
    1      325  10152 04:40:36       00:05:00
    2      525  10152 09:58:32       00:05:07
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多