我有一个数据框。
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
................................
答案 0 :(得分:2)
这个怎么样:
# 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