如何计算每个地方的时间

时间:2017-11-14 12:09:27

标签: r data.table

我有一个数据表如下:

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在每个place_id中花费的时间。

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)]

这给了我每个小组。不知道如何从那里获得所需的输出。感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您只需要计算每组id和place_id的最大时间戳和最小时间戳之间的差异。当然,在此操作之前,您必须将时间列转换为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