2017-11-14 9 views
0

에서 보낸 시간 계산 방법 : I는 각 ID로 각 place_id에 소요되는 시간을 계산하려면이에서나는 다음과 같이 데이터 테이블이 각 장소

DT1 <- 
     read.table(text = " 
          id   time     place_id 
          604  2017-08-10 18:44:14 15 
          604  2017-08-10 20:38:20 15 
          604  2017-08-10 20:54:26 24 
          604  2017-08-10 21:35:50 24        
          604  2017-08-11 12:05:42 30 
          604  2017-08-11 13:05:42 30 

          ", header = TRUE, stringsAsFactors = FALSE) 

합니다.

id  time place_id 
604  6846 15 
604  2484 24 
604  3600 30 

나는 각 영역

DT1[,follow_group_new := cumsum(difftime(time, shift(time, fill=-Inf), units="mins") > 5), by=list(id,place_id)] 

이 나에게 각 그룹 냈어 there.Any 도움말에서 원하는 출력을 얻을하는 방법을 잘이 감사를 제공하기위한 각 그룹을 얻기 위해이 같은 시도했다.

답변

3

id와 place_id 그룹 당 최대 amd와 최소 시간 소인 사이의 차이를 계산하면됩니다. 물론이 작업을 수행하기 전에 시간 열을 POSIXct로 변환해야합니다.

library(data.table) 
setDT(DT1) 
DT1[, time := as.POSIXct(time)] 
DT1[, .(time = difftime(max(time), min(time), units = "secs")), 
     by = .(id, place_id)] 
#  id place_id  time 
# 1: 604  15 6846 secs 
# 2: 604  24 2484 secs 
# 3: 604  30 3600 secs